前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第01问:MySQL 一次 insert 刷几次盘?

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

作者头像
爱可生开源社区
发布于 2020-03-12 14:01:13
发布于 2020-03-12 14:01:13
5930
举报

问题:

MySQL 一次 insert 刷几次盘?

实验:

工具:pt-tools

1. 先检查各个刷盘参数

2. 开启 pt-tools

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

4. 观察 pt-ioprofile 的结果

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档