博客
关于我
第01问:MySQL 一次 insert 刷几次盘?
阅读量:610 次
发布时间:2019-03-13

本文共 1293 字,大约阅读时间需要 4 分钟。

MySQL 插入操作时的刷盘情况分析

在实际操作中,我们发现在执行一次 INSERT 操作时,MySQL 对 redo logbinlog 分别触发了3次和1次刷盘操作。为了深入了解这一现象,我们使用了 pt-ioprofile 工具进行性能分析,得出了以下结论。

实验背景

为了追踪MySQL的IO操作情况,我们使用了 pt-ioprofile 这一工具。其原理是通过监听MySQL进程的系统调用(strace 工具),筛选并统计与IO相关的系统调用次数。同时,结合 lsof 工具的文件占用信息,可以准确定位到具体的文件操作。

对刷盘次数的分析

在本次实验中,我们对 INSERT 操作进行了如下步骤的监控和记录:

  • 检查初始参数:确认了各个相关的I/O参数设置,包括innodb_flush_log_at_trx_commit, log_bin, binlog_cache_size 等配置。这些参数对刷盘次数会产生重要影响。

  • 开启性能监控:通过 pt-ioprofile 开始持续追踪MySQL的IO操作,记录了系统调用中与文件操作相关的详细日志信息。

  • 执行一次 INSERT 操作:在默认配置下,执行对一个表的插入操作,监控系统的响应。

  • 分析结果:通过 pt-ioprofile 的输出结果,我们得知:

    • MySQL 对 redo log 进行了 3次 fsync 刷盘;
    • MySQL 对 binlog 进行了 1次 fdatasync 刷盘;
    • elligence 两种类型的刷盘操作机制存在显著差异。
  • ##need注意事项在实际操作中,可能会遇到如下情况:

  • 多线程测试:在多个线程同时执行 INSERT 操作时,我们观察到刷盘次数可能会显著增加。这是由于每个逻辑线程都会独立触发相关的I/O操作。
  • 重复实验:为验证结果的稳定性,我们可以进行多次重复实验。例如,可以在不同的负载环境下测量刷盘次数,看看结果是否一致。
  • 调优参数:针对出现过多刷盘次数的问题,可以通过调整相关参数(如log_bin的缓存大小或binlog_cache_size)来减少I/O负载。
  • 毕竟,具体的刷盘次数还会受到多个系统参数和操作具体场景的影响。通过深入分析这些参数设置及其实际效果,我们可以更好地优化数据库性能。

    pt-ioprofile 工作原理

    pt-ioprofile 工具的核心原理是通过跟踪MySQL进程的系统调用,记录与文件操作相关的统计信息。其具体实现方式是:

  • 使用 strace 工具监听目标进程的系统调用记录。
  • 过滤筛选与文件操作(如open, read, write, fsync 等)相关的系统调用。
  • 解析这些记录,分别统计不同的文件操作类型及其调用次数。
  • 这样,我们能够清晰地了解数据库在执行具体操作时的I/O行为,并判断是否存在性能瓶颈或不必要的I/O操作。

    本次实验的结果表明,单次 INSERT 操作可能会导致显著的I/O操作,这与数据库的配置参数和涉及的存储引擎类型密切相关。在实际应用中,可以根据具体需求进行参数调优,以减少不必要的I/O操作,提升数据库性能。

    转载地址:http://jwraz.baihongyu.com/

    你可能感兴趣的文章
    pair的用法
    查看>>
    Flex 布局的自适应子项内容过长导致其被撑大问题
    查看>>
    PL/SQL 动态Sql拼接where条件
    查看>>
    Lua-table 一种更少访问的安全取值方式
    查看>>
    虚函数
    查看>>
    Error:Cannot read packageName from AndroidManifest.xml
    查看>>
    【自学Flutter】4.1 Material Design字体图标的使用(icon)
    查看>>
    【换行符】什么时候用cin.get()吃掉输入流中的换行符
    查看>>
    【二叉树】已知后序与中序求先序
    查看>>
    广东外语外贸大学第三届网络安全大赛Writeup
    查看>>
    SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
    查看>>
    Thymeleaf sec:authorize 标签不生效
    查看>>
    微信JS-SDK DEMO页面和示例代码
    查看>>
    一张图搞定RPC框架核心原理
    查看>>
    他来了他来了,他带着云栖大会的免费门票走来了
    查看>>
    获取linux 主机cpu类型
    查看>>
    pwntools编写技巧
    查看>>
    How2Heap笔记(三)
    查看>>
    测试tensorflow是否安装成功 出现 SyntaxError: invalid syntax的错误
    查看>>
    算法训练 未名湖边的烦恼(递归,递推)
    查看>>