MySQLslowquery[慢查詢]資料整理
前言:
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 |
+—————–+———-+
+—————–+———-+
| 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
“,$3)}`|wc -l
“,$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`;”
*** 只是直接在crontab 寫命令一直不生效,考慮可能是因為”” 雙引號原因,所以放在a.sh 提供執行許可權 ‘x’即可執行.
具體如下 :
[root@lottery ~]# crontab -l
0 0 * * * /bin/sh /root/a.sh
[root@lottery ~]# cat a.sh
/usr/bin/mysql -uroot -N -e “set global slow_query_log_file=`/data/mysql/slow_`date +%Y_%m_%d`.log`;”
[root@lottery ~]#
mysql> show variables like `slow_query%log%`;
+——————————+————————————-+
| Variable_name | Value |
+——————————-+———————-—-———–+
+——————————-+———————-—-———–+
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/slow_2015_05_12.log |
+—————————––+—————————-—-—–+
| slow_query_log_file | /data/mysql/slow_2015_05_12.log |
+—————————––+—————————-—-—–+
mysql> system date +%Y_%m_%d
2015_05_12
mysql>
【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正…
相關文章
- MySQL slow query [慢查詢] 資料整理MySql
- 資料庫查詢慢的原因資料庫
- 慢查詢
- MySQL 慢查詢MySql
- MySQL慢查詢MySql
- Redis 慢查詢Redis
- 【ElasticSearch】給ElasticSearch資料庫配置慢查詢日誌Elasticsearch資料庫
- 資料庫MySQL一般查詢日誌或者慢查詢日誌歷史資料的清理資料庫MySql
- mongodb慢查詢分析MongoDB
- mysqldumpslow慢查詢MySql
- DELETE TABLE資料後,查詢變慢,問題處理delete
- 資料庫系列:MySQL慢查詢分析和效能最佳化資料庫MySql
- oracle 9i 查詢資料字典檢視慢案例分析Oracle
- PostgreSQL、KingBase 資料庫 ORDER BY LIMIT 查詢緩慢案例SQL資料庫MIT
- MySQL 慢查詢優化MySql優化
- SQL慢查詢排查思路SQL
- 詭異的”慢查詢“
- MongoDB慢查詢與索引MongoDB索引
- MySQL:慢查詢日誌MySql
- Mysql慢查詢操作梳理MySql
- MySQL開啟慢查詢MySql
- 使用慢查詢日誌
- mysql慢查詢日誌MySql
- 開啟查詢慢查詢日誌引數
- 資料庫資料的查詢----連線查詢資料庫
- 基於AI+資料驅動的慢查詢索引推薦AI索引
- Oracle資料庫非同步IO導致查詢響應緩慢Oracle資料庫非同步
- SQL Server資料庫查詢速度慢原因及優化方法SQLServer資料庫優化
- MySQL - 資料查詢 - 簡單查詢MySql
- B樹查詢,磁碟查詢資料
- laravel 5.8 連線資料庫庫查詢 資料 速度慢,使用mysql 直接查詢響應就快,什麼原因呢?Laravel資料庫MySql
- MySQL 慢查詢那點事MySql
- 瑞士軍刀redis - 慢查詢Redis
- 詳解MySQL--慢查詢MySql
- 檢視慢查詢進度
- 慢查詢日誌的管理
- MySQL 清空慢查詢檔案MySql
- oracle 跨庫查詢greenplum慢Oracle