ECOS百科全书|高级搜索|RSS订阅|加入收藏|服务中心|联系我们欢迎您光临!

shopex数据库优化实例

来源:商鸣网络科技 发布时间:2019-04-14 05:45 字体:【   点击

shopex4.8.5是商派早年推出的一个基于php5.2平台的半开源电子商务建站软件,曾经一度有50多万用户使用。不过近年来更新比较少,加上有新的产品推出,官方对shopex的维护力度大不如前。很多用户在使用中,发现并发到一定量时,网站访问速度就明显下降。由于shopex是并开源产品,只有专业的开发人员(手头有源码的)可以通过修改程序来优化程序性能。以下是几个数据库优化例子,是清风君在给用户维护中的实战经验,成功将客户的网站访问速度由原来的数秒钟提升到毫秒级。


优化实例1:payment_id字段类型错误导致的mysql查询效率低

实例代码:

select status from sdb_payments 
where payment_id=15519409588088 LIMIT 0, 1;

sdb_payments的payment_id虽然内容是数字,不过类型却是varchar,这里没有加单引号,会导致mysql转类型,耗时太长。


解决办法:

1)、修改程序,把payment_id加上单引号,

2)、能确定数据库这个字段内容全部是数字的话,直接修改字段类型为TINYINT



优化实例2:订单表过大导致的查询缓慢

实例代码:

SELECT order_id FROM sdb_orders 
WHERE 1551978066>cancel_time 
AND pay_status='0' 
AND ship_status='0' 
AND status='active';

电商网站运营久了,最明显的就是订单表越来越大,导致查询效率越来越低。


解决办法:给订单表增加pay_status、ship_status、status 索引



优化实例3:

实例代码:

select * from sdb_orders where disabled="false" 
AND member_id=8356 
AND order_refer="local" 
AND isparent="false" order by createtime desc LIMIT 0, 20;

原因和实例2一样。


解决办法:

增加 member_id、disabled、order_refer、isparent 索引


优化实例4:

实例代码:

SELECT queue_id,data,tmpl_name,target,title,event_name,sender,message
FROM sdb_msgqueue 
WHERE status='ready' 
OR (status='locking' AND send_time<1551940735 AND send_time>1551933655) 
ORDER BY level DESC LIMIT 0, 7;

由于shopex的站内消息不会自动清除,msgqueue表会越来越大,而每次客户提交订单时,又开启了自动发送短信或邮件提醒功能,所以会触发发送站内和邮件信息,导致提交订单明显卡顿。


解决办法:

sdb_msgqueue 表增加status、send_time 索引。


以上是几个优化实例,具体应该根据网站的运营数据和网站内容进行相应分析处理。如果有这方面的需求,欢迎与我们联系。


------分隔线--------

关键词:shopex,数据库优化,增加数据库索引

转载请保留:http://www.hnqss.cn/html/jszx/shopex/article-2852.html

------分隔线--------
尚未注册畅言帐号,请到后台注册