02.28 第01問:MySQL 一次 insert 刷幾次盤?


第01問:MySQL 一次 insert 刷幾次盤?


問題:

MySQL 一次 insert 刷幾次盤?


實驗:

工具:pt-tools

1. 先檢查各個刷盤參數


第01問:MySQL 一次 insert 刷幾次盤?


2. 開啟 pt-tools


第01問:MySQL 一次 insert 刷幾次盤?


3. 在 MySQL 中,任意表插入一行


第01問:MySQL 一次 insert 刷幾次盤?


4. 觀察 pt-ioprofile 的結果


第01問:MySQL 一次 insert 刷幾次盤?


我們用 pt-ioprofile 跟蹤 MySQL IO 的系統調用,統計了次數。

可以看到本次實驗中:

1. MySQL 對 redo log 進行了 3 次刷盤(fsync);

2. MySQL 對 binlog 進行了 1 次刷盤(fdatasync);

3. 對 redo log 和 binlog 的刷盤的方法是不同的。


結果:

可以看到本次試驗進行了一次 insert,會對 redo log 進行 3 次刷盤,對 binlog 進行 1 次刷盤。

但是需要注意以下事項:

1. 進行相同試驗,會觀察到不同結果:MySQL 有多個邏輯會引發刷盤,比如 InnoDB 主線程的刷髒等;

2. 每次 fsync,如果沒有數據需要刷盤,不會對磁盤造成壓力。對於 3 次刷盤不必過分擔心;

3. 以後我們會進行試驗,分析到底是什麼導致了刷盤。


第01問:MySQL 一次 insert 刷幾次盤?

pt-ioprofile 是 pt-tools 中的一款性能分析工具,可以監聽 MySQL 進程,輸出 IO 操作的次數/總時間/平均時間。

其原理如下:pt-ioprofile 用 strace 監聽 MySQL 的系統調用,篩選其中與 IO 相關的系統調用,進行統計。同時 pt-ioprofile 也獲取 lsof 的輸出,將其與 strace 的結果匹配,得知系統調用操作了哪個 MySQL 文件。


第01問:MySQL 一次 insert 刷幾次盤?


關於 MySQL 的技術內容,你們還有什麼想知道的嗎?趕緊留言告訴小編吧!


第01問:MySQL 一次 insert 刷幾次盤?


分享到:


相關文章: