mysql 视图慢_第03问:磁盘 IO 报警,MySQL 读写哪个文件慢了?
問(wèn)題:
磁盤 IO 報(bào)警,說(shuō) IO 飽和了。那么 MySQL 讀寫哪個(gè)文件慢了?binlog?redo log?還是哪張表?
構(gòu)造環(huán)境:
根據(jù)先前的 實(shí)驗(yàn) 02,構(gòu)造環(huán)境,模仿 binlog 的磁盤 IO 慢。
實(shí)驗(yàn):
想觀察 IO 相關(guān)的行為,需啟用 performance_schema 的 instrument(生產(chǎn)者)和 consumer(消費(fèi)者)。將 performance_schema 的配置重置為默認(rèn)配置,IO 相關(guān)的 instrument(生產(chǎn)者)在默認(rèn)配置里開(kāi)啟。
啟用 waits 相關(guān)的 consumer(消費(fèi)者)
將已記錄的性能數(shù)據(jù)清零
向 MySQL 施加壓力
在另一個(gè) session 中,觀察最近的 IO 行為。
可以看到 binlog 的刷盤 IO 明顯比其他操作慢,符合我們構(gòu)造的實(shí)驗(yàn)場(chǎng)景。這樣我們就快速定位了哪個(gè)文件的 IO 變慢了。有了線程號(hào),我們還可以定位其對(duì)應(yīng)的操作:
結(jié)論:
我們通過(guò) sys.x$latest_file_io,找到最近的 IO 操作的記錄,進(jìn)行了排序。需注意:
1. 這里不用 sys.latest_file_io 的原因是無(wú)法對(duì)操作延遲進(jìn)行排序。
小知識(shí):以 sys 中, 以 x$ 開(kāi)頭的視圖,是原始數(shù)據(jù)。
不以 x$ 開(kāi)頭的視圖,是給人類看的視圖(比如時(shí)間顯示會(huì)帶單位,顯示成 123 ns)。
2. sys.x$latest_file_io 視圖涉及到兩張表:performance_schema.events_waits_history_long和performance_schema.threads如果某個(gè)線程退出,就不會(huì)出現(xiàn)在 sys.x$latest_file_io 視圖。所以 sys.x$latest_file_io 不是"最近的 IO 操作記錄",而是"當(dāng)前活躍線程的最近的 IO 操作記錄"。
關(guān)于 MySQL 的技術(shù)內(nèi)容,你們還有什么想知道的嗎?趕緊留言告訴小編吧!
總結(jié)
以上是生活随笔為你收集整理的mysql 视图慢_第03问:磁盘 IO 报警,MySQL 读写哪个文件慢了?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python的对象模型_[ Python
- 下一篇: select into from 用法_