概念
MySQL 的慢查詢日志用來記錄在 MySQL 中回應時間超過引數 long_query_time(單位秒,默認值 10)設定的值并且掃描記錄數不小于min_examined_row_limit(默認值0)的陳述句,默認環境下,慢查詢日志是關閉的
引數說明
- log_slow_admin_statements: 默認情況下,慢查詢日志中不會記錄管理陳述句(DCL),可通過設定 log_slow_admin_statements = on 讓管理陳述句中的慢查詢也會記錄到慢查詢日志中
- log_queries_not_using_indexes: 默認情況下,也不會記錄查詢時間不超過 long_query_time 但是不使用索引的陳述句,可通過配置 log_queries_not_using_indexes = on 讓不使用索引的 SQL 都被記錄到慢查詢日志中(即使查詢時間沒超過 long_query_time 配置的值),
- slow_query_log(慢查詢開啟狀態): show variables like 'slow_query_log';
- slow_query_log_file(慢查詢日志存放的位置): show variables like 'slow_query_log_file';
- long_query_time(查詢超過多少秒才記錄 ): show variables like 'long_query_time';
慢查詢使用
- 開啟慢查詢日志: set global slow_query_log = on;
- 設定慢查詢閥值: set global long_query_time = 1;
- 確定慢查詢日志路徑: show global variables like "datadir";
- 確定慢查詢日志的檔案名: show global variables like "slow_query_log_file";
注意:
long_query_time時間使用把控:
1- 一般把 long_query_time 設定為 1 秒,但如果某個業務的對MySQL 要求比較高的 QPS,可設定慢查詢為 0.1 秒(或者和組長等人協商),以便于及時發現慢查詢,我們可以及時優化,
2- 一般測驗環境的 long_query_time 設定的閥值要比生產環境的小,便于在測驗環境及時發現一些效率低的 SQL,甚至某些重要業務測驗環境 long_query_time 可以設定為0,以便記錄所有陳述句,并留意慢查詢日志的輸出,上線前的功能測驗完成后,分析慢查詢日志每類陳述句的輸出,重點關注 Rows_examined(查詢檢查的行數),提前優化,
查看慢查詢日志方式
- 我們可以通過設定慢查詢輸出到表中,通過SHOW VARIABLES LIKE "log_output" 查看當前是輸入file還是表,通過 set global log_output ="TABLE"設定輸入表中查看
- 可以通過mysqldumpslow查看,比如說查看時間最長的10條sql陳述句: mysqldumpslow -s al -n 10 日志檔案
[root@linjina linjiandeMacBook-pro]# tail -f /tmp/mysql_slow.log
Time: 120815 23:22:11
User@Host: root[root] @ localhost []
Query_time: 9.869362
Lock_time: 0.000035
Rows_sent: 1
Rows_examined: 6261774
SET timestamp=1294388531;
select count(*) from houses;
回傳值說明:
Time:慢查詢發生的時間
User@Host:客戶端用戶和 IP
Query_time:查詢時間
Lock_time:等待表鎖的時間
Rows_sent:陳述句回傳的行數
Rows_examined:陳述句執行期間從存盤引擎讀取的行數
擴展知識
1- 一般慢查詢日志我們用來記錄查詢慢的sql,而我們定位慢的sql陳述句兩種方法:
- 查看慢查詢日志確定已經執行完的慢查詢;
- show processlist 查看正在執行的慢查詢
2- sql陳述句分類
- DDL(Data Definition Languages)陳述句:即資料庫定義陳述句,用來創建資料庫中的表、索引、視圖、存盤程序、觸發器等,常用的陳述句關鍵字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME,
- DML(Data Manipulation Language)陳述句:即資料操縱陳述句,用來查詢、添加、更新、洗掉等,常用的陳述句關鍵字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增刪改查,
-
DCL(Data Control Language)陳述句:即資料控制陳述句,用于授權/撤銷資料庫及其欄位的權限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.),常用的陳述句關鍵字有:GRANT,REVOKE,
-
TCL(Transaction Control Language)陳述句:事務控制陳述句,用于控制事務,常用的陳述句關鍵字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION,
你還不來,我怎敢老去 -----張愛玲
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/145330.html
標籤:其他
上一篇:深入oracle索引,磁區
