《Mysql實例mysql優(yōu)化之定位效率較低的SQL》要點:
本文介紹了Mysql實例mysql優(yōu)化之定位效率較低的SQL,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL實例一般通過以下兩種方式定位執(zhí)行效率較低的 SQL 語句.
MYSQL實例通過慢查詢?nèi)罩径ㄎ荒切﹫?zhí)行效率較低的 SQL 語句,用 --log-slow-queries[=file_name] 選項啟動時, mysqld 會 寫一個包含所有執(zhí)行時間超過 long_query_time 秒的 SQL 語句的日志文件,通過查看這個日志文件定位效率較低的 SQL .
MYSQL實例慢查詢?nèi)罩驹诓樵兘Y(jié)束以后才紀錄,所以在應(yīng)用反映執(zhí)行效率出現(xiàn)問題的時候查詢慢查詢?nèi)罩静⒉荒芏ㄎ粏栴},可以使用 show processlist 命令查看當前 MySQL 在進行的線程,包括線程的狀態(tài)、是否鎖表等,可以實時地查看 SQL 的 執(zhí)行情況,同時對一些鎖表操作進行優(yōu)化.
MYSQL實例下面我們舉例說明一下,如何通過慢查詢?nèi)罩径ㄎ粓?zhí)行效率底的 SQL 語句:
開啟慢查詢?nèi)罩荆?
?
MYSQL實例在 my.cnf 配置文件中增加上述配置項并重啟 mysql 服務(wù),這時 mysql 慢查詢功能生效.慢查詢 日志將寫入?yún)?shù) DATADIR (數(shù)據(jù)目錄)指定的路徑下,默認文件名是 host_name-slow.log .
和錯誤日志、查詢?nèi)罩疽粯?慢查詢?nèi)罩居涗浀母袷揭彩羌兾谋?可以被直接讀取.
MYSQL實例下例中演示了慢查詢?nèi)罩镜脑O(shè)置和讀取過程.
1,首先查詢一下 long_query_time 的值 .
?
MYSQL實例2,為了方便測試,將修改慢查詢時間為 5 秒.
?
MYSQL實例3,依次執(zhí)行下面兩個查詢語句.
第一個查詢因為查詢時間低于 5 秒而不會出現(xiàn)在慢查詢?nèi)罩局校?
?
MYSQL實例第二個查詢因為查詢時間大于 5 秒而應(yīng)該出現(xiàn)在慢查詢?nèi)罩局校?
?
MYSQL實例4,查看慢查詢?nèi)罩?
?
MYSQL實例從上面日志中,可以發(fā)現(xiàn)查詢時間超過 5 秒的 SQL ,而小于 5 秒的則沒有出現(xiàn)在此日志中.
MYSQL實例如果慢查詢?nèi)罩局杏涗泝?nèi)容很多,可以使用 mysqldumpslow 工具( MySQL 客戶端安裝自帶)來對慢查詢?nèi)罩具M行分類匯總.
下例中對日志文件 mysql_master-slow.log 進行了分類匯總,只顯示匯總后摘要結(jié)果:
?
MYSQL實例對于 SQL 文本完全一致,只是變量不同的語句, mysqldumpslow 將會自動視為同一個語句進行統(tǒng)計,變量值用 N 來代替.
這個統(tǒng)計結(jié)果將大大增加用戶閱讀慢查詢?nèi)罩镜男?并迅速定位系統(tǒng)的 SQL 瓶頸.
MYSQL實例注意:慢查詢?nèi)罩緦τ谖覀儼l(fā)現(xiàn)應(yīng)用中有性能問題的 SQL 很有幫助,建議正常情況下,打開此日志并經(jīng)常查看分析.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/6446.html