java监听mysql某张表的insert操作_第01问:MySQL 一次 insert 刷几次盘?

a66621f93dca414e710c9114cc0eff61.png

问题:

MySQL 一次 insert 刷几次盘?

实验:

工具:pt-tools

1. 先检查各个刷盘参数

6c6c71e575df8db67ecb3d53e12330fe.png

2. 开启 pt-tools

bf92bdf61a11f270e6cf8054785ba0f1.png

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

03c52a9cd01b1b920287da7dd7bfab06.png

4. 观察 pt-ioprofile 的结果

aa14e92d799549f27b3a663c46d97b6a.png

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

faee2994c17e4d7a896cd0e265d0038f.png

pt-ioprofile 是 pt-tools 中的一款性能分析工具,可以监听 MySQL 进程,输出 IO 操作的次数/总时间/平均时间。

其原理如下:pt-ioprofile 用 strace 监听 MySQL 的系统调用,筛选其中与 IO 相关的系统调用,进行统计。同时 pt-ioprofile 也获取 lsof 的输出,将其与 strace 的结果匹配,得知系统调用操作了哪个 MySQL 文件。

0a09aea2fcb9c3ff89356d7ff3abd6c8.png

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

c46730bb6ece7b9b2b8893fb8ce09baf.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值