日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數據庫 > MySQL > 正文

MySQL的慢日志線上問題及優化方案

2024-07-24 13:15:12
字體:
來源:轉載
供稿:網友

MySQL 慢日志(slow log)是 MySQL DBA 及其他開發、運維人員需經常關注的一類信息。使用慢日志可找出執行時間較長或未走索引等 SQL 語句,為進行系統調優提供依據。

本文將結合一個線上案例,分析如何正確設置 MySQL 慢日志參數和使用慢日志功能,并介紹下網易云 RDS 對 MySQL 慢日志功能的增強。

MySQL 參數組功能

網易云 RDS 實例提供了參數組管理功能,可通過參數管理界面查看絕大部分常用的 MySQL 系統參數,用戶可了解當前運行值和建議值:

MySQL,慢日志,優化方案

用戶還可通過參數管理頁面對所列的參數進行修改,點擊 “修改參數” 按鈕進行在線設置,點擊 “保存修改” 即可一鍵完成 MySQL 主從節點的參數修改: 

MySQL,慢日志,優化方案

查看參數管理界面不難發現,與慢查詢相關的參數比較多,那么,這些參數都是如何起作用的呢,相互關系又是如何,滿足什么條件的 SQL 語句才會記錄到慢日志中?只有了解這些才能更好地利用慢日志進行系統調優和問題定位。

下面,我們以這個線上案例為依托,介紹下該如何正確配置慢日志參數:

有用戶報告,他們使用的多個 RDS 5.7 版本實例慢日志異常,明明執行了一分多鐘的 SQL 語句,卻沒有記錄到慢日志中。還提供了用于復現的 SQL 語句。

慢日志參數正確配置姿勢

首先,我們需要確認該實例是否開啟了慢日志功能,默認情況下,MySQL 慢日志功能是關閉的。慢日志開關參數為 slow_query_log,可在 mysqld 啟動命令行或配置文件中顯式指定,若指定 slow_query_log=1 或不指定值,則表示開啟慢日志,賦值為 0 表示關閉。用戶可以在運行時動態開啟和關閉。

網易云 RDS 實例默認開啟慢日志功能,我們確認了該用戶未關閉實例的慢日志開關。

接下來,需確認慢日志記錄位置,MySQL 使用 log_output 參數指定以文件(FILE)還是以表 (TABLE) 的方式來保存慢日志。需要強調的是,僅指定 log_output 而將 slow_query_log 置為 0 并不會記錄慢日志,也就是說 slow_query_log 才是慢日志的開關。若使用文件形式記錄慢日志,則可通過 slow_query_log_file 指定文件名,如果用戶沒有顯式指定 slow_query_log_file,則 MySQL 將其初始化為 host_name-slow.log,host_name 即為運行 mysqld 的主機名,慢日志文件默認位于 MySQL 數據目錄。

網易云 RDS 實例不允許用戶修改日志文件路徑,但可以配置 log_output 參數,通過查詢,確認該實例以文件方式記錄慢日志,查看日志文件確認沒有用戶所述的 SQL 語句。

由于用戶提供了復現語句,我們執行了其 SQL 語句,確實 1 分多鐘才返回,通過 explain 命令發現其未走索引,掃描了較多的記錄數,再次查看慢日志仍沒有記錄該 SQL 語句。

MySQL 會記錄滿足執行時間超過 long_query_time 秒,掃描記錄數超過 min_examined_row_limit 行的 SQL 語句。

long_query_time 參數最小值和默認值分別為 1 和 10s,該參數可以精確到微秒(ms)。如果選擇將慢日志記錄到文件中,那么所記錄的時間精確到微秒,如果記錄到慢日志表(mysql.slow_log)中,那么僅精確到秒,微秒部分被忽略。

網易云 RDS 實例允許用戶設置這兩個參數值,那么是不是用戶調整了上述兩個閾值,導致無法滿足記錄條件呢,進一步查詢發現也不是問題原因所在。

我們注意到 MySQL 還有個名為 log_queries_not_using_indexes 的參數用于控制是否記錄未走索引的 SQL 查詢,代碼如下:

MySQL,慢日志,優化方案

重點關注箭頭所指內容,如果查詢未走索引或者索引無效,且相關參數開啟,那么 warn_no_index 設置為 true,若同時滿足掃描記錄數超過閾值,也會像慢查詢一樣被記錄,那么是不是該參數未開呢?結果仍是否定的。

問題原因之所在

由于數據庫實例中可能有較多不走索引的 SQL 語句,若開啟 log_queries_not_using_indexes,則存在日志文件或表容量增長過快的風險,此時可通過設置 log_throttle_queries_not_using_indexes 來限制每分鐘寫入慢日志中的不走索引的 SQL 語句個數,該參數默認為 0,表示不開啟,也就是說不對寫入 SQL 語句條數進行控制。

啟用后,系統會在第一條不走索引的查詢執行后開啟一個 60s 的窗口,在該窗口內,僅記錄最多 log_throttle_queries_not_using_indexes 條 SQL 語句。超出部分將被抑制,在時間窗結束時,會打印該窗口內被抑制的慢查詢條數以及這些慢查詢一共花費的時間。下一個統計時間窗并不是馬上創建,而是在下一條不走索引的查詢執行后開啟。

對應到該線上問題,log_throttle_queries_not_using_indexes 被設置為 10,在日志文件中看到周期性打印了如下內容:

MySQL,慢日志,優化方案

確實符合上面描述的現象,用戶的慢日志應該是被抑制了,匯總到了 359 里面去。我們嘗試將 log_throttle_queries_not_using_indexes 設置為 0,再執行對應的 SQL 語句,果然在日志文件中記錄了相應的 SQL 語句。

這個線上問題似乎已經定位到了,就是系統產生的不走索引的慢日志太多,而設置的 log_throttle_queries_not_using_indexes 太小,導致無法正常記錄用戶未走索引的慢日志。但還有一個疑惑點沒有解決,那就是 log_throttle_queries_not_using_indexes 為 0 時,每分鐘并沒有打印超過10條慢日志,更沒有 throttle 提示的 359 條這么多,那么設置為 10 的時候用戶提供的那條 SQL 語句應該被記錄到慢日志中才對啊,為何沒有記錄,原因何在?其實,仔細看下 MySQL 記錄不走索引的日志的代碼邏輯可以找到答案:

MySQL,慢日志,優化方案

上圖是記錄慢日志的主邏輯,是否記錄日志由函數 log_slow_applicable 控制,該函數先前已分析了一部分,我們進一步看該函數的其他相關內容,見下圖紅框:

MySQL,慢日志,優化方案

Suppress_logging 是個決定性的變量,只有它為 false,該 SQL 語句才可能被記錄。其結果就跟 log_throttle_queries_not_using_indexes 相關,我們進一步看下 log_throttle_qni.log 相關實現,如下圖:

MySQL,慢日志,優化方案

Eligible 即為 warn_no_index,inc_log_count() 函數在 1 分鐘內不走索引的語句總數超過 log_throttle_queries_not_using_indexes 時返回值為 true,只有 warn_no_index 和 inc_log_count() 返回值都為 true,suppress_current 才為 true,而 suppress_current 即為 suppress_logging。

通過對上述 2 個截圖內容進行分析,可以解答之前的疑惑點:

log_throttle_queries_not_using_indexes 統計的是所有不走索引的語句,其中有些語句因為不滿足掃描記錄數的約束而不會記錄到慢日志中,這就是為什么該值為 10 的時候,慢日志文件中并沒有 10 條記錄。因為這 10 條中有 8 條 SQL 語句由于掃描記錄數太少并沒有被記錄。

MySQL,慢日志,優化方案

這也解惑了上圖中 359 這個數字,它是這個時間窗內不走索引的 SQL 語句總數。所以,log_throttle_queries_not_using_indexes 是個很關鍵的參數,設置不當會無法正常記錄不走索引的慢查詢,導致慢日志功能部分失效。所以,用戶首先需盡可能避免出現大量不走索引的 SQL 語句,可以通過 RDS 健康檢查功能進行優化,再次,若出現慢日志中存在上述提示,應該調大 log_throttle_queries_not_using_indexes 的值,以便以進一步分析問題。

InnoSQL 慢日志功能增強

還有部分 RDS 實例用戶問我們,為什么我的 SQL 語句執行時間沒有超過所設置的 long_query_time,而且走了索引,但還是被記錄到慢日志中,是不是出 Bug 了?其實這不是 Bug,而是因為網易云 RDS 使用的 InnoSQL(網易維護的 MySQL 開源分支)版本對慢日志做了優化,除了考察 SQL 語句的執行時間外,還關注該查詢所需的磁盤頁面(Disk Page)數,因為所需的頁面數目過多,也可能會對系統負載造成較大影響。為了能夠量化統計,我們收集了 SQL 查詢所需讀取的總頁面數和這些頁面中實際進行 IO 的次數,分別記錄為 logical_reads和physical_reads,前者包括命中 InnoDB Buffer Pool 和未命中需要進行 IO 的頁面請求。

通過引入 slow_query_type 和 long_query_io 兩個參數為用戶提供該功能。前者可設置為 0/1/2/3。“1” 表示啟用基于執行時間來記錄慢日志,“2” 表示基于搜索總頁面數來記錄慢日志,“3” 是 “1” 和 “2” 的合集。所以在 InnoSQL 中,SQL 查詢只需滿足執行時間夠長或所需總頁面數夠多即可記錄到慢日志中。代碼實現片段如下:

MySQL,慢日志,優化方案

頁面數閾值通過 long_query_io 參數來衡量,用戶可動態設置,如果總頁面數 m_logical_reads 超過了該值,即使執行時間未超標,也會被記錄。相應的,RDS 實例慢日志表結構和慢日志文件輸出內容也增加了新的字段。

MySQL,慢日志,優化方案

上圖即為 InnoSQL 版的 slow_log 表結構,其中,logical_reads 和 physical_reads 為 InnoSQL 增加字段。同樣的,慢日志文件的輸出內容也增加了兩個字段,如下所示:

MySQL,慢日志,優化方案

除了以上詳細描述的內容外,MySQL 慢日志模塊還有如下幾個特性值得關注:

○ 進行慢日志統計及慢日志中所記錄的時間并不包括該 SQL 語句開始執行前獲取鎖所需等待的時間;

○ MySQL 在 SQL 語句執行完且所持有的鎖均已釋放后才將其寫入慢日志中,所以慢日志中的 SQL 語句記錄順序并不能準確反映這些 SQL 語句的實際執行順序;

○ 每條慢日志都包含一個時間戳,若寫入文件中,log_timestamps 參數用于將慢日志時間戳轉化為指定時區的時間。但該參數對于 mysql.slow_log 表中的慢日志不起作用;

○ 可通過設置 log_slow_slave_statements 來開啟 MySQL 從庫的慢日志功能;

○ ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE 等表管理操作也能夠被記錄到慢日志中,可通過 log_slow_admin_statements 選項開啟。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
精品日韩在线观看| 日韩不卡在线观看| 欧美日韩精品在线观看| 97最新国自产拍视频在线完整在线看| 色综合天天综合网国产成人综合天| 日本啊v在线| 欧美精选午夜久久久乱码6080| 亚洲一区在线观看网站| 中文字幕无线码一区| 中文字幕在线日韩| 日韩欧美在线1卡| 一区二区三区视频网站| 日韩中文字幕精品视频| 日韩精品视频在线免费观看| 国产黄色在线免费观看| 日韩精品中文在线观看| 国产一级在线播放| 91精品国产丝袜白色高跟鞋| 精品视频www| 999在线视频| 二区三区中文字幕| 精品中文在线| 亚洲.国产.中文慕字在线| 色综合天天性综合| 久久精品国产2020观看福利| 精品婷婷伊人一区三区三| 欧美日韩国产高清一区| 99精品视频99| 在线视频亚洲| 国产色在线视频| 中文字幕无线码一区| 69堂精品视频在线播放| 欧美日韩一区二区在线视频| 91精品久久久久久久久久| 欧美日韩国产一区中文午夜| 亚洲综合视频一区| 成人久久在线| 国产wwww| 中文字幕在线中文字幕二区| 欧美日韩国产在线| 日韩精品在线第一页| 大香一本蕉伊线亚洲网| 国产999在线观看| 亚洲三级中文字幕| 日韩精品―中文字幕| www.91香蕉视频| 中文字幕在线观看播放| 国产欧美在线观看| 久久视频一区| 国产视频一二区| 99日韩精品| 精品乱人伦一区二区三区| 99精品在线播放| 国产中文伊人| 国产一区不卡精品| 日韩精品在线私人| 91精品国产综合久久香蕉最新版| 欧美日韩精品三区| 欧美日韩激情一区| 亚洲美女视频一区| 欧美日韩综合视频| 欧美日韩精品国产| 1区2区在线| 精品激情国产视频| 精品免费久久久| 欧美久久在线观看| 区日韩二区欧美三区| 国产一区久久久| 日韩精品一页| 国产又粗又猛又爽又黄91精品| av中文在线资源| 精品亚洲综合| 日韩欧美在线综合网| 91精品国产综合久久久久久| 中文字幕精品www乱入免费视频| 欧美一卡2卡三卡4卡5免费| 国产成人精品网址| 日韩精品在线网站| 日韩精品视频免费播放| 精品久久久久久综合日本欧美| 91精品综合久久久久久| 国产不卡精品在线| 精品国内自产拍在线视频| 日本黄色一区二区三区| 国产拍揄自揄精品视频麻豆| 亚洲视频中文字幕| 美女免费视频一区| 色综合婷婷久久| 国产成人精品三级| 国产香蕉免费精品视频| 欧美日韩国产免费观看| 亚洲黄在线观看| 蜜桃视频中文字幕| 中文字幕日韩在线观看| 久久91精品国产91久久小草 | 日韩欧美中文在线视频| 日韩欧美国产三级| 国产在线观看精品| 国产福利久久久| 日本免费在线视频不卡一不卡二| 日韩精品欧美| 欧美日韩国产123区| 日韩视频中文| 国产激情在线| 国产日产一区二区三区| 日韩欧美一级视频| 午夜一区二区三区视频| 日韩免费看网站| 国产成人精品日本亚洲专区61| 久久中文精品| 日韩不卡一二三区| 中文在线一区| 久久香蕉精品| 蜜桃精品视频| 精品久久久久久无| 一区二区在线视频播放| 视频一区日韩| 色综合天天综合网天天狠天天 | 午夜伊人狠狠久久| 久久精品网站免费观看| 日韩欧美999| 日韩免费视频一区二区视频在线观看| 久久精品久久精品亚洲人| 日韩国产欧美亚洲| 亚洲一二三不卡| 欧美va亚洲va日韩∨a综合色| 亚洲欧美小说国产图片| 视频一区二区国产| 国产欧美日产一区| 亚洲电影中文字幕在线观看| 久久久另类综合| 五月综合激情日本mⅴ| 91精品国产综合久久久久久| 一级国产黄色片| lutube成人福利在线观看| 日本精品国语自产拍在线观看| 一区二区高清在线| 欧美中文字幕在线视频| 九七久久人人| 国产在线播放一区二区| 高清在线一区| 精品不卡一区二区| 日韩精品丝袜在线| 日韩黄色在线播放| 一区二区三区精品99久久| 日韩亚洲欧美中文在线| 日韩中文首页| 日韩中文字幕综合| 国产网站欧美日韩免费精品在线观看| 中文字幕日韩欧美在线| 天堂在线一区二区三区| 亚洲福利精品在线| 黄色资源在线观看| 国产成人精品三级| 麻豆精品99| 国产视频1区| 中文字幕在线观看国产| 欧美日韩国产在线观看| 日韩中文欧美在线| 欧美另类专区| 欧美日韩国产成人| 亚洲 欧美 精品| 日韩av在线中文字幕| 中文字幕国产日韩| 精品熟女一区二区三区| 一区二区日韩视频| 欧美黄页在线免费观看| 91精品视频观看| 九九视频精品免费| 欧美日韩一二三| 日韩精品视频中文字幕| 日韩国产成人| 日韩三级精品| 欧美日韩亚洲一区| 日韩久久久精品| 日韩欧美在线视频| 一区二区高清在线| 欧美日韩国产系列| 欧美日韩国产123区| 亚洲一卡二卡在线观看| 国产字幕在线看| 日本精品在线中文字幕| 欧美.日韩.国产.一区.二区| 99国内精品| 国产婷婷色一区二区三区| 精品对白一区国产伦| 日韩免费电影网站| 亚洲大片免费看| 91久久大香伊蕉在人线| 亚洲欧美久久234| 久久久91精品国产| 日韩视频一区| 91精品综合久久| 91欧美日韩| 亚洲免费中文字幕| 精品乱子伦一区二区| 日韩国产成人| 国产嫩草影院久久久久| 一级片免费在线播放| av免费看在线| 午夜伊人狠狠久久| 精品亚洲综合| 日本一欧美一欧美一亚洲视频| 亚洲图片小说综合| 91久久精品视频| 成人久久久久| 欧美在线视频第一页| 国产网站欧美日韩免费精品在线观看| 日韩亚洲欧美中文在线| 欧美日韩性视频一区二区三区| 国产激情在线播放| 日韩亚洲欧美中文在线| 日韩视频不卡中文| 久久精品蜜桃| www..com日韩| 中文字幕在线日韩| 美女在线视频一区| 日韩中文欧美| 91精选在线| 国产视频二区| 精品综合久久久久| 中文网丁香综合网| 欧美日韩综合在线免费观看| 精品日韩在线观看| 日韩视频一区| 日本亚洲欧美天堂免费| 亚洲第一视频| 国产95在线|亚洲| 国产免费一级| 欧美三级精品| 免费看日韩精品| 精品欧美不卡一区二区在线观看| 男人的天堂网av| 一区二区精品免费| 日本精品专区| 亚洲小说春色综合另类电影| 中文字幕在线观看精品| 91精品999| 中文在线第一页| 中文字幕狠狠干| 国产wwww| 亚洲福利在线视频| 91精品国产综合久久久久久漫画| 色综合天天性综合| 欧美日韩国产三级| 人妻一区二区三区免费| 国产一级片网站| 欧美99久久| 午夜精品一区二区三区免费视频| 亚洲综合在线小说| 午夜少妇久久久久久久久| 在线一区av| 91精品国产综合久久精品app| 99精品一级欧美片免费播放| 欧美日韩亚洲天堂| 91精品国产亚洲| 国产中文在线| 国产乱一区二区| 中文字幕日韩国产| 国产亚洲一区字幕| 亚洲久草视频| 91久久精品视频| 亚洲欧美久久久| 日韩欧美中文视频| 国产美女主播视频一区| 人妻一区二区三区免费| 精品国产乱码久久久久久牛牛| 欧美日韩国产系列| 久久精品女人| 国产黄色高清在线| 欧美三级日韩三级国产三级| 久久久精品网| 日韩一级在线视频 | 日韩欧美亚洲日产国| 91久久在线| 日韩欧美在线综合| 日韩一级免费在线观看| 欧美日韩国产一区在线| 精品在线99| 欧美日韩在线精品成人综合网| 91精品国产免费久久综合| 国产视频一区二| 日韩免费视频一区二区视频在线观看| 精品在线网站观看| 在线观看免费国产小视频| 欧美日韩国产在线观看| 中文字幕国产亚洲| 日韩欧美一二三| 久久香蕉精品| 国精品产品一区| 日韩国产91| 成人福利一区| 中文在线不卡视频| 精品亚洲国内自在自线福利| 日韩中文欧美| 91精品在线观看国产| 欧美日中文字幕| 欧美一级手机免费观看片| 国产福利免费观看| 久久婷婷国产| 一区视频在线播放| 亚洲a一级视频| 国产欧美日韩最新| 亚洲天堂国产视频| 日韩区欧美区| 欧美日韩高清不卡| 久精品在线观看| 日韩高清不卡一区二区| 日韩欧美在线网站| 日韩一二三四区| 国产导航在线| 91久久精品午夜一区二区| 亚洲福利在线视频| 亚洲综合欧美在线| 美女在线视频一区| 国产日韩av高清| 精品国产1区二区| 久久精品国产91精品亚洲| 午夜少妇久久久久久久久| 在线欧美日韩国产| 国产视频97| 国产乱国产乱300精品| 日韩在线观看视频一区| 欧美亚洲国产日韩| 久久婷婷综合国产| 久久91精品久久久久久秒播| 国产欧美日韩中文字幕| 三级精品视频| 在线视频日韩欧美| 亚洲第一福利视频在线| 影音先锋一区二区资源站| 欧美日韩中文字幕综合视频| 亚洲一级网站| 樱花草www在线| 欧美日韩久久不卡| 欧美日韩99| 国产欧美日韩精品综合| 国产不卡视频在线| 日韩高清不卡一区| aaa免费看大片| 欧美三级中文字幕在线观看| 国产欧美三级| 玖玖在线免费视频| 中文字幕乱码在线| 国产不卡的av| 韩国一区二区av| 日韩在线视频免费观看| 亚洲一区在线视频观看| 久久久久久久久99精品| 亚洲开心激情| 日韩精品国产欧美| 久久精品不卡| 久久麻豆视频| 久久99久久久久| 国产亚洲污的网站| 中文字幕日韩欧美在线视频| 日韩不卡一二三区| 亚洲男女av一区二区| 亚洲免费中文字幕| 亚洲成av人综合在线观看| 一二三区精品福利视频| 欧美日韩国产一级片| 欧美日韩第一区日日骚| 日韩视频 中文字幕| 中文字幕在线国产| 欧美三级精品| 国产丝袜欧美中文另类| 国产在线看一区| 日韩.欧美.亚洲| 黄色精品在线观看| 欧美国产三级| 欧美亚洲免费高清在线观看| 日韩在线观看a| 日本免费看黄| 91精品国产综合久久久蜜臀粉嫩 | 在线视频三区| 亚洲免费福利视频| 国产欧亚日韩视频| av一区在线| 国产一级在线播放| 精品九九久久| 国产 欧美 日韩 在线| 国产福利一区二区在线精品| 精品无人国产偷自产在线| 久久久精品99| 国产婷婷色一区二区三区在线| 日韩国产亚洲欧美| 亚洲成av人片在线| 深夜福利一区| 国产小视频在线| 国产在线不卡一区| 国产小视频免费在线观看| 午夜影院在线观看欧美| 中文字幕2020第一页| 日韩欧美999| 亚洲素人一区二区| 成人福利一区| 亚洲午夜久久| 欧美日韩在线播放视频| 国产三级做爰在线观看|