首页 > 代码库 > 单条commit与多条commit对系统产生的IOPS影响的探讨
单条commit与多条commit对系统产生的IOPS影响的探讨
本文中姓名与敏感号码脱敏声明:
出于对个人隐私的保护,对专家的真名进行脱敏,采用人称名代替,对于手机号和QQ号,部分用“X”符号替换。
1、国内资深性能优化专家老白先生(笔名:白鳝,人称老白)提问
单条COMMIT和多条COMMIT,对系统产生的IOPS有什么影响,有多大影响,为什么? |
2、小弟黎俊杰(网名:踩点)应答
黎俊杰134XXXXXXX1(389338XX3) 9:41:57 单条commit的IOPS肯定大于多条commit,每commit一次,LGWR就会有一个日志块做写入,即最少发生一次IOPS;多条一起commit,如果多条记录的大小小于一个块大小的话,即也只是发生一次IOPS,而通常一条记录即达到一个块大小的情况比较小。不知是不是这样理解,请徐总指教。 |
3、老白先生回复
老白138XXXXXXX0(62XX5) 9:44:24 首先分析下批量插入的IO产生有那几块, 然后评估下大概多大 |
小弟想,即然老白先生这么回复,肯定说明我的回答不够完整,好,看,继续往下,看我来深入一下。
4、小弟黎俊杰(网名:踩点)接着应答
黎俊杰134XXXXXXX1(389338XX3) 2015/1/5 9:51:34 批量插入的情况下,主要应该是LGWR和DBWR两部分产生IO |
5、老白先生再次回复
老白138XXXXXXX0(62XX5) 2015/1/5 9:56:20 如果问题要分析的再细一点,还要考虑索引的影响 |
老白此话一出,小弟我立即自拍脑袋三下,插入数据,如果表上有索引,肯定会维护索引的,在此题目的回答上,我怎么就没有把思维扩宽些,插入数据维护索引也会引起IO,而只是单纯围绕着题目中的“插入”这个具体的事件,而不考虑该事件还会引发的相关事件呢。看来,在专家面前,不得不承认自己与专家的差距啊。
下面来老实回答一下老白吧。往下啦…
6、中间插曲
Hu jun军150XXXXXXX8(275475005) 2015/1/5 9:57:21 |
Hu jun军是我的哥们,是子衿优化团队的一枚实力大将,看来这哥们是忙中偷闲了一下啊。
7、未等俺喘气,老白先生继续指导
老白138XXXXXXX0(62XX5) 2015/1/5 9:57:35 |
8、小弟的肺腑回复
黎俊杰134XXXXXXX1(389338XX3) 2015/1/5 9:57:42 |
不得不说,我当时的回答确实没有想到索引上来,在此长知识了。不过还好,问题回答上了一半,说明了产生IO主要是因为DBWR与LGWR
9、再看专家的过人之高言
老白138XXXXXXX0(62XX5) 2015/1/5 9:58:00 |
看到这段指导之言,不得不说,“专家就是专家”,问题分析的全面与深入,让小弟发自从内心的佩服!
小弟今天真是长知识了,与专家交流的感觉真是好,也真希望与专家的交流能够更多些。
本文作者:黎俊杰(网名:踩点),从事”系统架构、操作系统、存储设备、数据库、中间件、应用程序“六个层面系统性的性能优化工作
欢迎加入 系统性能优化专业群,共同探讨性能优化技术。群号:258187244
单条commit与多条commit对系统产生的IOPS影响的探讨