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.oryywd.tw/html/jszx/shopex/article-2852.html

------分隔線--------
尚未注冊暢言帳號,請到后臺注冊
今晚快乐双彩中奖号码