欢迎来到天天文库
浏览记录
ID:24766670
大小:52.50 KB
页数:4页
时间:2018-11-16
《巧用mysqlinnodb引擎锁机制解决死锁问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、巧用MySQLInnoDB引擎锁机制解决死锁问题>>教育资源库 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQLInnoDB引擎锁机制的理解逐步加深。 案例如下: 在使用Shoysqltablesinuse1,locked1 LOCKySQLthreadid83,queryid162348740dc03dcSearchingroodeXlocksrecbutnotgapat;infobits0 0:len8;hex800000000097629c;ascb;;1:len6;hex00002866eaee;asc(f;;
2、2:len7;hex00000d40040110;asc;;3:len8;hex80000000000050b2;ascP;;4:len8;hex800000000000502a;ascP*;;5:len8;hex8000000000005426;ascT;;6:len8;hex800012412c66d29c;ascA,f;;7:len23;hex75706c6f6164666972652e636f6d2f68616e642e706870;ascxxx.;;8:len8;hex800000000000042b;asc+;;9:len4;hex474bfa2b;
3、ascGK+;;10:len8;hex8000000000004e24;ascN$;; ***(2)TRANSACTION: TRANSACTION0677833454,ACTIVE0sec,processno11397,OSthreadid344086updatingordeleting,threaddeclaredinsideInnoDB499 mysqltablesinuse1,locked1 3lockstruct(s),heapsize320,undologentries1 MySQLthreadid84,queryid162348739dc
4、03dcUpdating updateTSK_TASKsetSTATUS_ID=1067,UPDATE_TIME=noodeXlocksrecbutnotgap Recordlock,heapno92PHYSICALRECORD:n_fields11;pactformat;infobits0 0:len8;hex800000000097629c;ascb;;1:len6;hex00002866eaee;asc(f;;2:len7;hex00000d40040110;asc;;3:len8;hex80000000000050b2;ascP;;4:len8;h
5、ex800000000000502a;ascP*;;5:len8;hex8000000000005426;ascT;;6:len8;hex800012412c66d29c;ascA,f;;7:len23;hex75706c6f6164666972652e636f6d2f68616e642e706870;ascuploadfire.hand.php;;8:len8;hex800000000000042b;asc+;;9:len4;hex474bfa2b;ascGK+;;10:len8;hex8000000000004e24;ascN$;; ***(2)ONTIM
6、E2`oftable`dc_db/TSK_TASK`trxid0677833454lock_modeXlocksrecbutnotgapat;infobits0 0:len8;hex8000000000000425;asc%;;1:len8;hex800012412c66d29c;ascA,f;;2:len8;hex800000000097629c;ascb;; *12下一页>>>>这篇文章来自..,。**ON_TIME:监测时间; STATUS_ID:任务状态; 索引:KEY_TSKTASK_MONTIME2(STATUS_ID,MON_TIME)。
7、 分析,涉及的两条语句应该不会涉及相同的TSK_TASK记录,那为什么会造成死锁呢? 查询MySQL官网文档,发现这跟MySQL的索引机制有关。MySQL的InnoDB引擎是行级锁,我原来的理解是直接对记录进行锁定,实际上并不是这样的。 要点如下: 不是对记录进行锁定,而是对索引进行锁定; 在UPDATE、DELETE操作时,MySQL不仅锁定E=NOE=noTSK_TASKinute);然后再更新状态:updateTSK_TASKsetSTATUS_ID=1064whereIDin(.) 至此,死锁问题彻底解决。上一页12>>>>这篇文章来自..,。
此文档下载收益归作者所有