Mysql慢查詢解釋
MySQL的慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日志中。long_query_time的默認值為10,意思是運行10S以上的語句。默認情況下,Mysql數據庫并不啟動慢查詢日志,需要我們手動來設置這個參數,當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日志會或多或少帶來一定的性能影響。慢查詢日志支持將日志記錄寫入文件,也支持將日志記錄寫入數據庫表;慢查詢日志用于記錄一些過慢的查詢語句,可以幫助管理員分析問題所在,該日志默認是沒有開啟的,需要在配置文件里添加一系列參數來手動啟動
開啟Mysql慢查詢的理由
數據庫是很容易產生瓶頸的地方,現在Nosql大家討論這么熱,估計都被數據庫搞郁悶了。MySQL中最影響速度的就是那些查詢非常慢的語句,這些慢的語句,可能是寫的不夠合理或者是大數據下多表的聯合查詢等等,所以我們要找出這些語句,分析原因,加以優化。這也是發這篇博文的原因
開啟mysql慢查詢方法
1)方法一、登陸mysql數據庫終端里開啟
| mysql> show variables like "%long%"; <SPAN style="COLOR: #ff00ff"> //查看一下默認為慢查詢的時間10秒 </SPAN> +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> set global long_query_time=1; <SPAN style="COLOR: #ff00ff">//設置成1秒,加上global,下次進mysql已然生效</SPAN> Query OK, 0 rows affected (0.00 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff"> //查看一下慢查詢是不是已經開啟 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec) mysql> set slow_query_log='ON'; <SPAN style="COLOR: #ff00ff"> //加上global,不然會報錯的</SPAN> ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL mysql> set global slow_query_log='ON'; <SPAN style="COLOR: #ff00ff">//這個參數設置為ON,表示啟用慢查詢,可以捕獲執行時間超過一定數值的SQL語句。</SPAN> Query OK, 0 rows affected (0.28 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff">//查看是否已經開啟 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec) |