什么是MySQL慢日志?
MySQL慢查詢?nèi)罩臼荕ySQL服務(wù)器在執(zhí)行查詢時(shí)記錄下來的查詢語(yǔ)句和相應(yīng)時(shí)間的一種機(jī)制。通過慢查詢?nèi)罩荆覀兛梢哉页鰣?zhí)行緩慢的查詢,進(jìn)而優(yōu)化相關(guān)的操作。
如何開啟MySQL慢日志?
如果需要啟用MySQL的慢查詢?nèi)罩竟δ埽枰谂渲梦募y.cnf中進(jìn)行相應(yīng)的設(shè)置。找到[mysqld]節(jié),加入以下內(nèi)容即可:
slow_query_log = ON
long_query_time = 2 # 單位為秒,表示執(zhí)行時(shí)間超過2s的所有查詢都會(huì)記錄在慢查詢?nèi)罩局小?/p>
log_queries_not_using_indexes = ON # 需要將索引未被使用的查詢也記錄在慢查詢?nèi)罩局袝r(shí),需要加上此選項(xiàng)。
如何查詢MySQL慢日志?
MySQL慢查詢?nèi)罩灸J(rèn)記錄在系統(tǒng)的/var/lib/mysql/hostname-slow.log文件中,可以使用以下命令來查詢相應(yīng)日志:
sudo mysqldumpslow -s t -t 10 /var/lib/mysql/hostname-slow.log
該命令將會(huì)列出執(zhí)行時(shí)間最長(zhǎng)的前10條查詢語(yǔ)句,其中-s參數(shù)表示排序選項(xiàng),-t參數(shù)用于指定返回結(jié)果的條數(shù)。
如何分析MySQL慢日志?
分析日志通常需要借助一些工具,例如pt-query-digest和mysqldumpslow等。pt-query-digest是一個(gè)非常實(shí)用的分析工具,它可以用于分析日志中的查詢信息并生成相關(guān)的報(bào)告。以下是使用pt-query-digest分析慢日志的命令:
pt-query-digest /var/lib/mysql/hostname-slow.log >slow_query_report.txt
執(zhí)行完該命令后,會(huì)生成一個(gè)名為slow_query_report.txt的報(bào)告文件。報(bào)告文件中包含了詳細(xì)的查詢分析信息,如查詢時(shí)間、執(zhí)行次數(shù)、是否使用索引等。