[root@cloudlu bin]# ./mysqldumpslow -s t -t 1 /usr/local/mysql/data/cloudlu-slow.log Reading mysql slow query log from /usr/local/mysql/data/cloudlu-slow.log Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=3.0 (3), root[root]@localhost select * from t
-s 排序選項:c 查詢次數 r 返回記錄行數 t 查詢時間
-t n:顯示top n條查詢
對于一般的分析已經差不多了,不過對于百分比等等數據mysqldumpslow就不夠完善了。所以世界上多了很多各種MySQL慢日志分析工具,比較優(yōu)秀的有mysqlsla(Perl腳本)和pt-query-digest(Perl腳本),可以提供Count, sql的執(zhí)行次數及占總的slow log數量的百分比,Time, 執(zhí)行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比,95% of Time, 去除最快和最慢的sql, 覆蓋率占95%的sql的執(zhí)行時間,Lock Time, 等待鎖的時間,95% of Lock , 95%的慢sql等待鎖時間,Rows sent, 結果行統(tǒng)計數量, 包括平均, 最小, 最大數量,Rows examined, 掃描的行數量,還可以生成表報,存儲分析結果。這里就不一一介紹了。
通過這些慢日志分析軟件定位到了慢查詢語句就已經完成了SQL優(yōu)化的一大半。接下來通過在MySQL中執(zhí)行explain或者desc命令查看慢查詢語句,可以看出為什么SQL查詢慢。
mysql> explain select * from test.t \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 2 Extra: NULL 1 row in set (0.00 sec)
1. type:ALL是效率最差,最要注意的
2. key:是否有使用Key,key長度如何
3. Extra:最好不要出現(xiàn)filesort以及temporary,最主要是要關注在orderby和groupby。
Note: SQL優(yōu)化是個很復雜的過程,有可能出現(xiàn)拆東墻補西墻的情況:比如給數據庫表加入了索引之后,確實查詢快了,可是存儲空間加多了,插入刪除操作耗時也增加了,如果在一個寫多讀少的系統(tǒng)中,執(zhí)行這種優(yōu)化可能會起到反效果。所以優(yōu)化完之后千萬不能大意,要持續(xù)監(jiān)控系統(tǒng),防止出現(xiàn)引入新瓶頸的情況。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com