慢查詢日誌可以幫助dba定位可能存在問題的sql語句,從而進行sql語句層面優化。
檢視慢查詢時間閾值,預設值為10,代表10秒。
mysql> show variables like 'long_query_time';
預設情況下,mysql資料庫不啟動慢查詢日誌,使用者需要手動將引數設定為on。
檢視慢查詢日誌是否開啟:
mysql > show variables like 'log_slow_queries';
開啟後,mysql資料庫會記錄執行時間(毫秒級)超過long_query_time的所有sql語句,此處是大於關係。
如果執行語句沒有使用索引,通過log_queries_not_using_indexes引數確定是否將此查詢記錄到慢查詢日誌。
mysql > show variables like 'log_queries_not_using_indexes';
mysql 5.6.5版本新增引數log_throttle_queries_not_using_indexes,用來表示每分鐘允許記錄到慢查詢日誌且未使用索引的sql語句次數。該值預設為0,表示沒有限制。但生產環境下可能大量的未使用索引的sql語句被記錄到慢查詢日誌,導致慢查詢日誌檔案大小不斷增加。
得到執行時間最長的10條sql語句:
mysql > mysqldumpslow -s al -n 10 ***.log
慢查詢表在mysql架構下,名為slow_log。
引數log_output指定了慢查詢輸出的格式,預設為file,可以將它設定為table,就可以查詢mysql架構下的slow_log表。
innodb加強了對sql語句的捕獲方式,增加了對於邏輯讀取和物理讀取的統計。
物理讀取是指從磁碟中進行io讀取的次數,邏輯讀取包含所有的讀取,不管是磁碟還是緩衝池。
使用者可以通過額外的引數long_query_io將超過指定邏輯io次數的sql語句記錄在慢查詢日誌中。該值預設為100,即表示對於邏輯讀取次數大於100的sql語句記錄在慢查詢日誌中。
為了相容原mysql資料庫執行方式,還新增了引數slow_query_type用來表示啟用慢查詢日誌的方式。
a. 0表示不將sql語句記錄慢查詢日誌
b. 1表示根據執行時間將sql語句記錄慢查詢日誌
c. 2表示根據邏輯io次數將sql語句記錄慢查詢日誌
d. 3表示根據執行時間和邏輯io次數將sql語句新增到慢查詢日誌
innodb儲存引擎 讀書筆記 鎖
1 行級鎖並不會增加開銷,只有當實現本身會增加開銷時,行級鎖才會增加開銷,innodb不需要鎖公升級,乙個鎖和多個鎖的開銷是一樣的。2 innodb的意向鎖是表級別的鎖。3 innodb trx 記錄的是當前執行的innodb事務。innodb locks 記錄的是當前發生的鎖資訊。innodb l...
MySQL讀書筆記 儲存引擎
通過engine欄位可以看出mysql.user表,是乙個myisam表,表中一些字段含義 mysql從2007年開始提供了外掛程式式的儲存引擎api,從此湧出了一系列為不同目的而設計的儲存引擎。percona的xtradb儲存引擎是基於innodb引擎的乙個改進版本,已經包含在percona se...
MySQL讀書筆記 儲存引擎
關於儲存引擎的細節,請參考官方文件。如果使用innodb引擎,建議閱讀官方手冊中的innodb事務模型和鎖一節。通過engine欄位可以看出mysql.user表,是乙個myisam表,表中一些字段含義 mysql從2007年開始提供了外掛程式式的儲存引擎api,從此湧出了一系列為不同目的而設計的儲...