MySQL中的慢查詢?nèi)罩臼且环N記錄數(shù)據(jù)庫(kù)中執(zhí)行時(shí)間較長(zhǎng)的查詢語(yǔ)句的工具。通過(guò)分析慢查詢?nèi)罩?,可以幫助我們找出查詢性能瓶頸,并進(jìn)行優(yōu)化。
MySQL的慢查詢?nèi)罩疚募J(rèn)是關(guān)閉狀態(tài),需要在MySQL配置文件中進(jìn)行配置開(kāi)啟。在my.cnf或者my.ini文件中,找到以下參數(shù):
slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2
其中slow_query_log表示開(kāi)啟慢查詢?nèi)罩竟δ?,slow_query_log_file表示指定慢查詢?nèi)罩疚募痛鎯?chǔ)位置,long_query_time表示指定查詢時(shí)間超過(guò)多少秒才算慢查詢(默認(rèn)值是10秒)。
開(kāi)啟慢查詢?nèi)罩竞?,MySQL會(huì)把慢查詢語(yǔ)句記錄在指定的慢查詢?nèi)罩疚募小N覀兛梢允褂靡韵旅畈榭绰樵內(nèi)罩疚募?/p>
sudo tail -f /var/log/mysql/mysql-slow.log
這個(gè)命令會(huì)將慢查詢?nèi)罩緦?shí)時(shí)輸出到控制臺(tái)上,方便我們查看最新的慢查詢語(yǔ)句信息。
當(dāng)我們發(fā)現(xiàn)某個(gè)查詢語(yǔ)句執(zhí)行時(shí)間較長(zhǎng)時(shí),可以把該語(yǔ)句復(fù)制到MySQL客戶端中執(zhí)行,進(jìn)一步分析其執(zhí)行計(jì)劃和索引情況,找出優(yōu)化方案,提高查詢性能。