博客
关于我
第01问:MySQL 一次 insert 刷几次盘?
阅读量:611 次
发布时间: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/

    你可能感兴趣的文章
    有道云笔记 同步到我的博客园
    查看>>
    李笑来必读书籍整理
    查看>>
    Hadoop(十六)之使用Combiner优化MapReduce
    查看>>
    《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
    查看>>
    CoreCLR源码探索(八) JIT的工作原理(详解篇)
    查看>>
    andriod 开发错误记录
    查看>>
    C语言编译错误列表
    查看>>
    看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
    查看>>
    CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
    查看>>
    《web安全入门》(四)前端开发基础Javascript
    查看>>
    pycharm新建文件夹时新建python package和新建directory有什么区别?
    查看>>
    python中列表 元组 字典 集合的区别
    查看>>
    python struct 官方文档
    查看>>
    Android DEX加固方案与原理
    查看>>
    iOS_Runtime3_动态添加方法
    查看>>
    Leetcode第557题---翻转字符串中的单词
    查看>>
    Problem G. The Stones Game【取石子博弈 & 思维】
    查看>>
    Java多线程
    查看>>
    openssl服务器证书操作
    查看>>
    expect 模拟交互 ftp 上传文件到指定目录下
    查看>>