MySQL是目前應(yīng)用最廣泛的關(guān)系型數(shù)據(jù)庫,而查詢語句的執(zhí)行速度是影響MySQL性能的重要因素之一。慢SQL查詢一般是指執(zhí)行時(shí)間較長(zhǎng)的SQL語句,這些SQL語句會(huì)影響數(shù)據(jù)庫的查詢性能。那么如何查看正在執(zhí)行的慢SQL呢?下面介紹一種方法。
MySQL提供了慢查詢?nèi)罩荆╯low query log)功能,記錄超過設(shè)定閾值的SQL語句及其執(zhí)行時(shí)間等相關(guān)信息,進(jìn)而進(jìn)行優(yōu)化。在MySQL的配置文件中,可以開啟慢查詢?nèi)罩镜墓δ堋?/p>
#slow query log配置 slow_query_log = on slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 log_queries_not_using_indexes = off
在上述配置中,slow_query_log表示開啟慢查詢?nèi)罩竟δ埽瑂low_query_log_file表示指定慢查詢?nèi)罩疚募窂剑琹ong_query_time表示超時(shí)閾值,單位是秒,此處設(shè)為2秒,執(zhí)行時(shí)間超過2秒的SQL語句就會(huì)被記錄到慢查詢?nèi)罩局小og_queries_not_using_indexes表示記錄沒有使用索引的查詢語句。
開啟慢查詢?nèi)罩竟δ芎螅绻枰榭凑趫?zhí)行的慢SQL,可以使用以下命令:
mysql>show full processlist;
該命令會(huì)顯示當(dāng)前MySQL的所有進(jìn)程,包括正在執(zhí)行的進(jìn)程。如果有正在執(zhí)行的慢SQL,可以在結(jié)果中找到,并查看其詳細(xì)信息。
另外,也可以通過tail命令實(shí)時(shí)查看慢查詢?nèi)罩疚募缦拢?/p>
$ tail -f /var/log/mysql/mysql-slow.log
使用以上方法,可以查看正在執(zhí)行的慢SQL,從而進(jìn)行SQL語句優(yōu)化,提高M(jìn)ySQL查詢性能。