最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

當(dāng)事務(wù)遇到了IO

標(biāo)簽:
MySQL


此讨论仅限于Innodb存储引擎;

DBA与研发人员沟通的时候常常会说 “拒绝大事务,这事务太大啦,拆开”,“你要批量提交”;“什么,批量提交?这岂不是成了一个大事务?”

我根据自己的理解简单说明下,拒绝大事务,批量提交是针对不同“场景”的;

大事务就意味着锁持有的时间比较长(尽管Innodb是行锁):

缺点:

1、造成锁等待,其他需要同样row的事务处于lock wait状态,加大响应时间;

2、对一张表并发较高的时候,造成死锁几率较高

3、对于replication环境,会造成slave延迟较高(单线程SQL执行更改)

拆分大事务的话基本会提高并发量,降低死锁几率,减小slave延迟,是不是全部采用“小”事务就万事ok啦?

万事没有绝对,对于insert 语句,我有200w行记录,我执行200w次提交,这样事务就足够小啦;

这样并发量很高,基本无死锁,但master 和slave的IO 就快要受不了啦;

首先从SQL语句解析上,就需要解析200w次(暂不考虑使用prepare statement的情况)

其次如果insert字段中包含主键,那基本上是insert 一次,commit一次,就会产生一次IO,也就是会产生>=200w次IO;如果是非主键的话,innodb会利用其 insert buffer,change buffer等就合并IO,但这样做的效率不会显著太多,程序端在不断的insert;可以考虑每次提交2000条,分多次提交;这样就会降低IO利用率,slave可以平稳的过度;

什么时候事务保证足够的并发量,又要降低IO利用率呢,这杆秤还是需要DBA来实时的观察,比如借助zabbix这样优秀的监控工具,监控你的QPS,响应时间,IO利用率适当的调整!

有什么疑问随时讨论!

©著作权归作者所有:来自51CTO博客作者位鹏飞的原创作品,如需转载,请注明出处,否则将追究法律责任

MySQLIO事务数据库


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消