shopex mysql 数据库服务器_shopex数据库优化实例

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 索引。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值