久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何從MYSQL查詢日志中過濾出的慢查詢日志并找出TOP SQL

150次閱讀
沒有評論

共計 2745 個字符,預計需要花費 7 分鐘才能閱讀完成。

如何從 MYSQL 查詢日志中過濾出的慢查詢日志并找出 TOP SQL,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  在 MYSQL 慢查詢日志中 # Time 中只有時間但沒有日期的信息,需要知道一條慢查詢 SQL 具體是哪天的,
就需要 unix_timestamp 函數把 # Time 中的時間戳信息轉換為日期信息。

unix_timestamp(datetime= timestamp)
from_unixtime(timestamp= datetime)

mysql select unix_timestamp(2021-10-26 17:30:00
+—————————————+
| unix_timestamp(2021-10-26 17:30:00) |
+—————————————+
|  1451122200 |
+—————————————+
1 row in set (0.10 sec)

select from_unixtime(1451122200

mysql select from_unixtime(1451122200
+—————————–+
| from_unixtime(1451122200) |
+—————————–+
| 2021-10-26 17:30:00.000000  |
+—————————–+

過濾出 16:30 到 17:30 的慢查詢日志
方法一:使用時間戳過濾
mysql select unix_timestamp(2021-10-26 17:30:00
+—————————————+
| unix_timestamp(2021-10-26 17:30:00) |
+—————————————+
|  1451122200 |
+—————————————+
1 row in set (0.00 sec)

mysql select unix_timestamp(2021-10-26 16:30:00
+—————————————+
| unix_timestamp(2021-10-26 16:30:00) |
+—————————————+
|  1451118600 |
+—————————————+
1 row in set (0.00 sec)

sed -n  /SET timestamp=14511186../,/SET timestamp=14511222../ p QITV0223-slow.log test3.log

方法二:
mysql select unix_timestamp(2015-12-26 16:30:00
+—————————————+
| unix_timestamp(2021-10-26 16:30:00) |
+—————————————+
|  1451118600 |
+—————————————+

sed -n  /SET timestamp=14511186../,$ p QITV0223-slow.log test4.log

mysql select unix_timestamp(2021-10-26 17:30:00
+—————————————+
| unix_timestamp(2021-10-26 17:30:00) |
+—————————————+
|  1451122200 |
+—————————————+

1 row in set (0.00 sec)

– 使用 gred 在 test4.log 定位到 17:30 執行的 SQL,比如定位出在 1085 行
grep -n SET timestamp=14511222..   QITV0223-slow.log  test4.log
1085:SET timestamp=1451122200;

– 使用 sed 過濾出第一行到 1085 行的數據
sed -n 1,1085 p test3.log  test5.log

方法三:如果所有的 SQL 都有 #TIME 項,則使用 #TIME 進行過濾

sed -n  /# Time: 151226 16:30:../,/# Time: 151226 17:30:../ p QITV0223-slow.log test10.log
如果沒有匹配到“# Time: 151226 17:30:..”,則會把從 16:30 到慢查詢日志結尾的日志全過濾出來。

對于過濾好的慢查詢日志檢索 TOP SQL:

1. 獲取執行時間最長的 10 個 TOP SQL。
mysqldumpslow -s t -t 10 test10.log slow_t_top_sql.txt

2. 獲取平均查詢時間最長的 10 個 TOP SQL。

mysqldumpslow -s  at -t 10 test10.log slow_at_top_sql.txt

3. 獲取鎖定時間最長的 10 個 TOP SQL。

mysqldumpslow -s l -t 10 test10.log slow_l_top_sql.txt

4. 獲取平均鎖定時間最長的 10 個 TOP SQL。

mysqldumpslow -s al -t 10 test10.log slow_l_top_sql.txt

5. 獲取返回記錄最多的 10 個 TOP SQL。

mysqldumpslow -s r -t 10 test10.log slow_r_top_sql.txt

6. 獲取平均返回記錄最多的 10 個 TOP SQL。

mysqldumpslow -s ar -t 10 test10.log slow_r_top_sql.txt

7. 獲取執行次數最多的 10 個 TOP SQL。

mysqldumpslow -s c -t 10 test10.log slow_r_top_sql.txt

看完上述內容,你們掌握如何從 MYSQL 查詢日志中過濾出的慢查詢日志并找出 TOP SQL 的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-19發表,共計2745字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 福州市| 株洲市| 龙岩市| 旬邑县| 淮滨县| 丰城市| 静海县| 措勤县| 蒙山县| 茌平县| 乌兰县| 偃师市| 贵州省| 黄浦区| 定安县| 卢龙县| 临清市| 乐昌市| 贡嘎县| 康平县| 徐闻县| 泰安市| 光泽县| 扎兰屯市| 莱西市| 兰考县| 弋阳县| 永嘉县| 昌乐县| 灵寿县| 天柱县| 利津县| 葫芦岛市| 旬邑县| 始兴县| 呼和浩特市| 通辽市| 叙永县| 黄浦区| 米易县| 固阳县|