亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL慢查詢優化之慢查詢日志分析的實例教程

2024-07-24 13:08:30
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了MySQL慢查詢日志分析的實例教程,通過設置參數從慢查詢日志開始分析性能問題的原因,需要的朋友可以參考下
 

數據庫響應慢問題最多的就是查詢了。現在大部分數據庫都提供了性能分析的幫助手段。例如Oracle中會幫你直接找出慢的語句,并且提供優化方案。在MySQL中就要自己開啟慢日志記錄加以分析(記錄可以保存在表或者文件中,默認是保存在文件中,我們系統使用的就是默認方式)。

先看看MySQL慢查詢日志里面的記錄長什么樣的:

Time         Id Command  Argument# Time: 141010 9:33:57# User@Host: root[root] @ localhost [] Id:   1# Query_time: 0.000342 Lock_time: 0.000142 Rows_sent: 3 Rows_examined: 3use test;SET timestamp=1412904837;select * from t;

這個日志應該很好理解了,第一個#記錄時間戳,第二個#記錄執行命令的用戶和地址信息,第三個#記錄執行查詢的時間、鎖的時間、返回行數、被掃描的行數。接著后面記錄真正執行的SQL語句。還可以通過以下命令看看cvs存儲格式每個字段意義。

SHOW CREATE TABLE mysql.slow_log;

接下來說說如何獲取和分析慢日志吧。

查看MySQL慢日志參數

進入啟動好的MySQL,執行以下命令

mysql> show variables like '%slow_query%';
+---------------------------+----------------------------------------+| Variable_name       | Value                 |+---------------------------+----------------------------------------+| slow_query_log      | OFF                  || slow_query_log_file    | /usr/local/mysql/data/cloudlu-slow.log |+---------------------------+----------------------------------------+

這里告訴我們慢日志的日志存放位置,慢日志是否有開啟。
那么什么樣的查詢需要被日志呢?在MySQL中, 沒有index的查詢 以及 超過指定時間同時超過指定掃描行數的查詢 需要記錄在慢日志查詢里面。

那么它們的參數又是怎么查看的呢?

沒有index的查詢記錄開關

mysql> show global variables like '%indexes%';
+----------------------------------------+-------+| Variable_name             | Value |+----------------------------------------+-------+| log_queries_not_using_indexes     | OFF  || log_throttle_queries_not_using_indexes | 0   |+----------------------------------------+-------+

第一個參數 表示是否開啟記錄沒有index的查詢,第二個

參數用來做日志記錄的流量控制,一分鐘可以記錄多少條,默認0是表示不限制。

超過指定時長的查詢開關

mysql> show global variables like '%long_query%';
+-----------------+-----------+| Variable_name  | Value   |+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+1 row in set (0.00 sec)

就一個參數指定超過多少時長的查詢需要被記錄

超過指定行數的掃描查詢開關

mysql> show variables like '%min_examined_row_limit%';
+------------------------+-------+| Variable_name     | Value |+------------------------+-------+| min_examined_row_limit | 0   |+------------------------+-------+1 row in set (0.00 sec)

默認是0,代表不現在掃描行數

設置開啟MySQL慢日志參數

進入MySQL,輸入以下命令或者在MySQL的啟動配置文件里面修改或者給MySQL添加啟動參數,進入MySQL后的修改如下:

set global long_query_time=0.1;set global log_queries_not_using_indexes=on;set global slow_query_log = on;

這里要斟酌的有2點,第一是超過什么時長的日志是有問題的,這個由系統需求來決定。第二是沒有使用indexes的日志每分鐘要記錄多少條,要防止日志太多對性能產生影響。

在實際的日志分析中,通常慢日志的log數量不少,同時相同的查詢被記錄的條數也會很多,這里就需要如何從慢日志查詢中找到最有問題,最需要優化的日志。在這方面,有很多分析工具,最基本的分析工具就是MySQL自帶的mysqldumpslow,mysqldumpslow(Perl腳本)的輸出示例:

[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 

一看就非常清楚,它的輸出主要 統計不同慢sql的出現次數(Count 1),執行最長時間(Time 0.00s),累計總耗費時間(Time 0s),等待鎖的時間(Lock 0.00s),等待鎖的總時間(Lock 0s),發送給客戶端的行總數(Rows 3.0),掃描的行總數(Rows 3),用戶(root)以及sql語句本身。它最常用的參數包括:

  • -s 排序選項:c 查詢次數 r 返回記錄行數 t 查詢時間
  • -t n:顯示top n條查詢

對于一般的分析已經差不多了,不過對于百分比等等數據mysqldumpslow就不夠完善了。所以世界上多了很多各種MySQL慢日志分析工具,比較優秀的有mysqlsla(Perl腳本)和pt-query-digest(Perl腳本),可以提供Count, sql的執行次數及占總的slow log數量的百分比,Time, 執行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比,95% of Time, 去除最快和最慢的sql, 覆蓋率占95%的sql的執行時間,Lock Time, 等待鎖的時間,95% of Lock , 95%的慢sql等待鎖時間,Rows sent, 結果行統計數量, 包括平均, 最小, 最大數量,Rows examined, 掃描的行數量,還可以生成表報,存儲分析結果。這里就不一一介紹了。

通過這些慢日志分析軟件定位到了慢查詢語句就已經完成了SQL優化的一大半。接下來通過在MySQL中執行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) 

它的輸出格式細節可以關注MySQL explain format,在輸出中最要注意的是:
1. type:ALL是效率最差,最要注意的

2. key:是否有使用Key,key長度如何

3. Extra:最好不要出現filesort以及temporary,最主要是要關注在orderby和groupby。


Note: SQL優化是個很復雜的過程,有可能出現拆東墻補西墻的情況:比如給數據庫表加入了索引之后,確實查詢快了,可是存儲空間加多了,插入刪除操作耗時也增加了,如果在一個寫多讀少的系統中,執行這種優化可能會起到反效果。所以優化完之后千萬不能大意,要持續監控系統,防止出現引入新瓶頸的情況。



注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲伊人久久大香线蕉av| 国产成人亚洲综合| 一本色道久久综合亚洲精品小说| 亚洲免费一级电影| 国产主播精品在线| 久久久国产精品免费| 精品人伦一区二区三区蜜桃免费| 久久久精品久久久久| 91香蕉嫩草神马影院在线观看| 粉嫩av一区二区三区免费野| 久久伊人精品一区二区三区| 日韩精品中文字幕久久臀| 狠狠色狠狠色综合日日五| 国产精品福利在线观看| 亚洲免费av电影| 91av在线播放| 成人黄色免费网站在线观看| 91牛牛免费视频| 日本成人黄色片| 国产有码一区二区| 久久精品99久久久久久久久| 色综合久久精品亚洲国产| 中文字幕亚洲综合久久筱田步美| 亚洲高清一二三区| 欧美三级欧美成人高清www| 国产精品影院在线观看| 日韩精品在线免费观看视频| 自拍视频国产精品| 91中文字幕在线观看| 成人h视频在线观看播放| 久久不射电影网| 欧美大片va欧美在线播放| 国产精品爽爽爽爽爽爽在线观看| 国产精品露脸av在线| 国产亚洲精品久久久久久| 欧美激情一区二区三区久久久| 亚洲男人第一av网站| 欧美一级淫片播放口| 亚洲伊人久久综合| 亚洲第一精品久久忘忧草社区| 欧美极品少妇xxxxx| 亚洲综合最新在线| 97视频在线观看成人| 亚洲国产另类 国产精品国产免费| 91老司机精品视频| 欧美大学生性色视频| 97色在线视频观看| 国产精品9999| 亚洲精品国产美女| 91精品国产91久久久久| 懂色aⅴ精品一区二区三区蜜月| 日韩欧亚中文在线| 欧美日韩国产综合视频在线观看中文| 欧美一级淫片播放口| 91精品久久久久久久久不口人| 久久综合九色九九| 综合网日日天干夜夜久久| 国产亚洲福利一区| 欧美激情啊啊啊| 中文字幕亚洲无线码a| 欧美日韩日本国产| 久久久噜噜噜久久中文字免| 国产成人免费av电影| 国产91av在线| 成人黄色中文字幕| 精品亚洲va在线va天堂资源站| 视频在线观看99| 中文字幕av一区二区三区谷原希美| 狠狠久久亚洲欧美专区| 国产精品久久久久久久久久久久| 高清日韩电视剧大全免费播放在线观看| 国产精品男人爽免费视频1| 欧美精品在线免费观看| 亚洲乱码av中文一区二区| 国产剧情久久久久久| 国产伊人精品在线| 欧美亚洲激情在线| 亚洲乱码国产乱码精品精天堂| 日日噜噜噜夜夜爽亚洲精品| 热re99久久精品国产66热| 欧美精品激情视频| 一区二区三区回区在观看免费视频| 日本精品久久电影| 精品国产老师黑色丝袜高跟鞋| 久久97精品久久久久久久不卡| 国产欧美日韩中文字幕| 不用播放器成人网| 欧美最顶级的aⅴ艳星| 免费99精品国产自在在线| 欧洲永久精品大片ww免费漫画| 欧美成人免费一级人片100| 亚洲精品电影在线| 国产精品大陆在线观看| 欧美一区二区.| 精品国内自产拍在线观看| 欧美视频一区二区三区…| 久久久久亚洲精品成人网小说| 久久伊人91精品综合网站| 亚洲福利视频网站| 成人精品在线观看| 日韩在线观看网址| 精品中文字幕久久久久久| 久久久噜久噜久久综合| 久久久久这里只有精品| 亚洲国产私拍精品国模在线观看| 91在线观看免费高清| 久久久免费在线观看| 亚洲激情 国产| 欲色天天网综合久久| 久久久久免费精品国产| 国产午夜精品美女视频明星a级| 亚洲天堂av在线播放| 亚洲在线视频观看| 日韩精品视频免费在线观看| 日韩av片电影专区| 色老头一区二区三区在线观看| 久久这里只有精品99| 亚洲午夜精品久久久久久性色| 久久久久久久av| 国产精品久久久久久一区二区| 国产免费一区二区三区在线观看| 91成人免费观看网站| 久久精品国产2020观看福利| 亚洲大胆人体视频| 亚洲高清色综合| 精品免费在线视频| 日韩国产高清视频在线| 欧美三级免费观看| 久久精品视频导航| 97欧美精品一区二区三区| 亚洲春色另类小说| 国产精品久久久久久久久久新婚| 国产精品国产自产拍高清av水多| 激情成人在线视频| 北条麻妃一区二区在线观看| 91成人国产在线观看| 欧美孕妇毛茸茸xxxx| 成人性生交大片免费观看嘿嘿视频| 大桥未久av一区二区三区| 亚洲淫片在线视频| 91精品国产91久久久久| 91高清在线免费观看| 91精品国产91久久久久| 国产精品黄色影片导航在线观看| 九九综合九九综合| 国产精品成久久久久三级| 伊人久久男人天堂| 国模私拍一区二区三区| 国产精品一区二区三| 国产精品美女在线观看| 8x拔播拔播x8国产精品| 久久视频在线免费观看| 久久精品99久久久香蕉| 中文字幕精品国产| 国产精品高清在线| 国产成人精品在线视频| 91地址最新发布| 国产一区二区三区精品久久久| 国产精品wwww| 久久精品电影网站| 欧美猛男性生活免费| 国产日韩欧美中文在线播放| 欧美性猛交xxxxx水多| 欧美日韩国产一区在线|