MySQL slow query [慢查詢] 資料整理
前言:
MySQL中提供了一個慢查詢的日誌記錄功能,可以把查詢SQL語句時間大於多少秒的語句寫入慢查詢日誌,日常維護中可以透過慢查詢日誌的記錄資訊快速準確地判斷問題所在。
MySQL中提供了一個慢查詢的日誌記錄功能,可以把查詢SQL語句時間大於多少秒的語句寫入慢查詢日誌,日常維護中可以透過慢查詢日誌的記錄資訊快速準確地判斷問題所在。
(有點類似 oracle的v$session_longops )
如下為MySQL slow query[慢查詢]配置、log檔案引數介紹、指令碼實現每天以日期格式生成新的log檔案等..
1、/etc/my.cnf 配置 slow query
#開啟慢查詢
slow_query_log=on
#超過2秒的查詢就視為慢查詢
#超過2秒的查詢就視為慢查詢
long_query_time=2
#記錄日誌
slow_query_log_file=/data/mysql/slow.log
2、mysql資料庫中檢視引數具體值
1)mysql> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
2) mysql> show variables like '%slow_query_log%';
+------------------------------+---------------------------+
| Variable_name | Value |
+------------------------------+---------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/public3306/slow.log |
+------------------------------+---------------------------+
mysql>
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
2) mysql> show variables like '%slow_query_log%';
+------------------------------+---------------------------+
| Variable_name | Value |
+------------------------------+---------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/public3306/slow.log |
+------------------------------+---------------------------+
mysql>
3、slow.log資訊解讀 及其mysqldumpslow分析簡單介紹
1)
slow.log資訊解讀
# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
Query_time == 用的時間'秒'
Lock_time ==鎖的時間'秒'
Rows_sent ==返回行數
Rows_examined==共查詢行數
2)
slow log 檢視工具mysqldumpslow
透過mysqldumpslow –help或--help 檢視sllow query log
-s,是order的順序,說明寫的不夠詳細,俺用下來,包括看了程式碼,主要有
c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
-t,是top n的意思,即為返回前面多少條的資料
-g,後邊可以寫一個正則匹配模式,大小寫不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
這個是按照時間返回前10條裡面含有左連線的sql語句。
c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
-t,是top n的意思,即為返回前面多少條的資料
-g,後邊可以寫一個正則匹配模式,大小寫不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
這個是按照時間返回前10條裡面含有左連線的sql語句。
###### 查詢慢查詢log中超過10s sql的個數(包括重複的sql)..
grep Query_time: slow.log |awk '$3>=10{printf("%.f\n",$3)}'|wc -l
4、其他引數設定
慢查詢相關的 引數log_queries_not_using_indexes
如果log_queries_not_using_indexes為ON的話,當執行一個sql語句的時候,如果一個表沒有索引就會把這個資訊記錄在慢查詢檔案中
show variables like "%log_queries_not%" ;
set global log_queries_not_using_indexes=on;
5、指令碼實現slow query每天以日期形式新生成一個log
*** 為了便捷統計每天slow query查詢 量和效能問題,特寫指令碼實現slow query每天以日期形式新生成一個log
*** 其實就是一個 /usr/bin/mysql -uroot -N -e "set global slow_query_log_file='/data/mysql/slow_$(date +%Y_%m_%d).log';"
具體如下 :
[root@Wonhigh-Test102 ~]# /usr/bin/mysql -uroot -N -e "show variables like 'slow_query_log_file';set global slow_query_log_file='slow_$(date +%Y_%m_%d).log';show variables like 'slow_query_log_file';"
+---------------------+---------------------+
| slow_query_log_file | slow_2015_05_11.log |
+---------------------+---------------------+
+---------------------+---------------------+
| slow_query_log_file | slow_2015_05_12.log |
+---------------------+---------------------+
[root@Wonhigh-Test102 ~]#
【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28602568/viewspace-1650130/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL Slow Query log(慢查詢日誌)MySql
- mysql之 slow log 慢查詢日誌MySql
- MySQL 慢查詢分析工具~pt-query-digest 詳解MySql
- MySQL慢查詢MySql
- MySQL 慢查詢MySql
- MySQL:慢SQL(slow_log)MySql
- coca SLOW QUERY
- MySQL:慢查詢日誌MySql
- MySQL 慢查詢優化MySql優化
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- 資料庫查詢慢的原因資料庫
- 【mysql】explain命令分析慢查詢MySqlAI
- [Mysql]慢查詢最佳化MySql
- MySQL 慢查詢那點事MySql
- 詳解MySQL--慢查詢MySql
- 資料查詢語句:DQL(Data Query Language)
- 資料庫MySQL一般查詢日誌或者慢查詢日誌歷史資料的清理資料庫MySql
- MYSQL查詢資料MySql
- 資料庫系列:MySQL慢查詢分析和效能最佳化資料庫MySql
- ntpdate會導致mysql slow query log出現很大的query timeMySql
- MySQL - 資料查詢 - 簡單查詢MySql
- DQL(Date Query Language)資料庫查詢語句資料庫
- MySQL慢查詢分析工具之mysqldumpslowMySql
- Mysql 慢查詢優化實踐MySql優化
- mysql 表資料量大量查詢慢如何優化MySql優化
- (十二)資料庫查詢處理之Query Execution(1)資料庫
- Query.js - 類SQL前端資料查詢類庫JSSQL前端
- 慢查詢
- mysql查詢效率慢的SQL語句MySql
- mysql慢查詢,死鎖解決方案MySql
- MySQL — 資料查詢語言MySql
- mysql將查詢資料另存MySql
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- laravel 5.8 連線資料庫庫查詢 資料 速度慢,使用mysql 直接查詢響應就快,什麼原因呢?Laravel資料庫MySql
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel
- 盤點MySQL慢查詢的12個原因MySql
- MySQL慢查詢日誌相關設定MySql
- MySQL索引原理及慢查詢最佳化MySql索引