方法:1、若未開啟慢查詢,用「set global slow_query_log='ON';」開啟慢;2、用「set global slow_query_log_file=路徑」設定慢查詢檔案儲存位置;3、用「set global slow_query_log_file=路徑」設定慢查詢檔案儲存位置;3、用“subl 路徑”查詢檔案即可。
本教學操作環境:centos 7系統、mysql8.0.22版本、Dell G3電腦。
Mysql中查詢慢的Sql語句的記錄查找
慢查詢日誌 slow_query_log,是用來記錄查詢比較慢的sql語句,透過查詢日誌來找出哪一個sql語句比較慢,這樣可以對比較慢的sql可以進行最佳化。
登陸mysql資料庫:
1、檢視一下目前的慢查詢是否開啟,若未開啟則開啟
#以及慢查詢所規定的時間:
show variables like 'slow_query_log'; show variableslike 'long_query_time';
如果你的查詢後的結果是OFF 狀態的話,就需要透過相關設定將其修改為ON狀態:
set global slow_query_log='ON';
將慢查詢追蹤的時間設定為1s:
這裡你在設定之後,這個世界是不會立即變成1s的,需要在資料庫重新啟動後才生效:
#2、設定慢查詢日誌檔案儲存的位置:
set global slow_query_log_file='/var/lib/mysql/test_1116.log';
3、 查看以下配置後的檔案:
sudo subl /var/lib/mysql/test_1116.log
擴充知識:
SELECT * FROM `slow_log` where start_time > '2019/05/19 00:00:00';
select * from information_schema.processlist
select * from information_schema.processlist where info is not null order by time desc
rows_sent 和 rows_examined發送的結果數以及查詢掃過的行數,這兩個值特別重要,特別是 rows_examined。基本上就能告訴我們,哪個查詢是需要注意的「大」查詢。
實際操作中,我們也是把有大量rows_examined的查詢一個個拿出來分析,加入索引,修改查詢語句的編寫,來徹底的解決問題。
處理結果和反思
經過所有慢查詢的檢查和整改,目前MySQL每分鐘慢查詢數徘徊在1~2之間,CPU的負荷也非常低。問題算是基本解決了。
反思問題出現的原因,有幾個地方要注意:
1,資料庫出問題往往不是上線即引發問題,而是有一個累積的過程,不斷累積的糟糕的查詢語句會逐步增加系統負載,最後壓倒駱駝的最後一根稻草往往看上去莫名其妙
2,最後的一根稻草甚至有可能根本不存在,不是一次發版或者是功能上線,而是隨著使用者使用量上升,資料量的累積而爆發
3,既然問題的出現是累積的過程,就需要在每次程式碼發版之前做好review
# 4,索引的加入很重要
5,慢查詢的監控也需要納入到Zabbix的監控範圍
推薦學習:mysql影片教學
以上是mysql怎麼查詢慢的sql語句的詳細內容。更多資訊請關注PHP中文網其他相關文章!