您好,登錄后才能下訂單哦!
MySQL語句如何優化,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
開啟慢查詢日志,配置樣例:
[mysqld] log-slow-queries
在my.cnf 配置文件中增加上述配置項并重啟mysql服務,這時mysql慢查詢功能生效。慢查詢日志將寫入參數DATADIR(數據目錄)指定的路徑下,默認文件名是host_name-slow.log 。
和錯誤日志、查詢日志一樣,慢查詢日志記錄的格式也是純文本,可以被直接讀取。下例中演示了慢查詢日志的設置和讀取過程。
首先查詢一下 long_query_time 的值。
mysql> show variables like 'long%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | long_query_time | 10 | +-----------------+-------+ 1 row in set (0.00 sec)
為了方便測試,將修改慢查詢時間為5秒。
mysql> set long_query_time=5; Query OK, 0 rows affected (0.02 sec)
依次執行下面兩個查詢語句。
第一個查詢因為查詢時間低于5 秒而不會出現在慢查詢日志中:
mysql> select count(*) from order2008; +----------+ | count(*) | +----------+ | 208 | +----------+ 1 row in set (0.00 sec)
第二個查詢因為查詢時間大于5 秒而應該出現在慢查詢日志中:
mysql> select count(*) from t_user; +----------+ | count(*) | +----------+ | 6552961 |
查看慢查詢日志。
[root@localhost mysql]# more localhost-slow.log # Time: 081026 19:46:34 # User@Host: root[root] @ localhost [] # Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961 select count(*) from t_user;
從上面日志中,可以發現查詢時間超過5 秒的SQL,而小于5秒的則沒有出現在此日志中。
如果慢查詢日志中記錄內容很多,可以使用mysqldumpslow工具(MySQL客戶端安裝自帶)來對慢查詢日志進行分類匯總。下例中對日志文件mysql_master-slow.log進行了分類匯總,只顯示匯總后摘要結果:
[root@mysql_master mysql_data]#mysqldumpslow mysql_master-slow.log Reading mysql slow query log from mysql_master-slow.log Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_master select count(N) from t_user;
對于 SQL 文本完全一致,只是變量不同的語句,mysqldumpslow 將會自動視為同一個語句進行統計,變量值用N來代替。這個統計結果將大大增加用戶閱讀慢查詢日志的效率,并迅速定位系統的SQL 瓶頸。
看完上述內容,你們掌握MySQL語句如何優化的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。