檢閱速度較慢的MySQL查詢
您已啟用慢查詢記錄並有記錄可以檢視。如果您尚未啟用記錄功能,您可以在這裡找到相關步驟。分析記錄
記錄位置:/var/log/slow-queries.log
注意:如果您在此位置找不到記錄,請驗證您的my.cnf項目,並確認MySQL在變更之後已重新啟動。
格式: #時間:210905 6:33:11#用戶@主機:dbuser [dbname] @主機名稱[1.2.3.4]#查詢時間:12.116250鎖定時間:0.000035行數:0行已檢查:201565使用dbname; SET timestamp = 1409898791;慢查詢於此...
如果您有上百格式的數百個條目的記錄,日誌可能不堪重負。為了讓記錄更易閱讀,請使用mysqldumpslow解析記錄。
mysqldumpslow -r -a /var/log/mysql/mysqld.slow.log該輸出將包含重要信息,如時間,行數及查詢。
計數:2時間= 20.54s(41s)鎖定= 0.02s(0s)行= 12547802(0),dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id ='214380'ORDER By site_id DESC LIMIT 0,2 COUNT: 1時間= 21.74s(21s)鎖定= 0.01s(0s)行= 12547802(0),dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id ='214380'ORDER BY site_id DESC LIMIT 0,2 COUNT:1時間= 23.86s(23s)鎖定= 0.20s(0s)行= 12547802(0),dbuser [dbuser] @localhost SELECT * FROM db_exp_table WHERE site_user_id ='214380'ORDER BY site_id DESC LIMIT 0,2
查看上面的範例,我們有1個查詢的執行時間為20-24秒。這會導致您的網站出現問題,從載入時間緩慢到發生逾時錯誤(無盡旋轉)等等。該查詢正在檢查的12,547,802行。在有超過1200萬列的表格上執行的大型查詢(即:select *),可能會導致不良的使用者體驗。最佳化查詢(例如:選取「咖啡桌」)或減少檢查的資料列(例如封存舊資料)會加快查詢速度。
如果記錄檔較大,請執行mysqldumpslow並將輸出儲存至檔案。如此一來,您便可以透過grep或find等其他檔案操作工具來檢視。
mysqldumpslow -r -a /var/log/slow-queries.log > slow.log.parsed
後續步驟
檢視慢速查詢記錄之後,您應該應該了解需要修復的問題查詢。如果使用高資源的MySQL,如果您的網站仍然很慢,您可能需要調整MySQL ,以便更好地利用伺服器的資源。
記錄完畢後,請務必停用MySQL慢查詢記錄。啟用記錄功能會不必要地消耗MySQL資源,並有可能填滿您的磁碟(出現錯誤的查詢)。
GoDaddy主機服務
我們的伺服器專家可以啟用/停用MySQL慢查詢記錄功能,並最佳化MySQL。若要進一步了解此服務, GoDaddy嚮導可為您提供協助。