91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-16 15:16:09 來源:億速云 閱讀:136 作者:柒染 欄目:MySQL數據庫

如何從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的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌吉市| 织金县| 张掖市| 阿勒泰市| 大埔区| 临夏县| 临湘市| 济阳县| 门头沟区| 丰原市| 义乌市| 拉孜县| 营口市| 潼南县| 察哈| 海林市| 铁力市| 焦作市| 双桥区| 盐源县| 错那县| 正宁县| 洱源县| 阿克苏市| 东丰县| 新民市| 南开区| 财经| 高雄市| 宜宾县| 辉南县| 体育| 海南省| 洪泽县| 化隆| 翁牛特旗| 奎屯市| 缙云县| 资讯| 英超| 西盟|