第01问:MySQL 一次 insert 刷几次盘?

第01问:MySQL 一次 insert 刷几次盘?_第1张图片

问题:

MySQL 一次 insert 刷几次盘?

实验:

工具:pt-tools

  1. 先检查各个刷盘参数

第01问:MySQL 一次 insert 刷几次盘?_第2张图片

2. 开启 pt-tools!
第01问:MySQL 一次 insert 刷几次盘?_第3张图片

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

图片3.png

4. 观察 pt-ioprofile 的结果

第01问:MySQL 一次 insert 刷几次盘?_第4张图片

我们用 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. 以后我们会进行试验,分析到底是什么导致了刷盘。

小贴士 下.png


第01问:MySQL 一次 insert 刷几次盘?_第5张图片

你可能感兴趣的:(mysql)