巧用mysqlinnodb引擎锁机制解决死锁问题

巧用mysqlinnodb引擎锁机制解决死锁问题

ID:24766670

大小:52.50 KB

页数:4页

时间:2018-11-16

巧用mysqlinnodb引擎锁机制解决死锁问题_第1页
巧用mysqlinnodb引擎锁机制解决死锁问题_第2页
巧用mysqlinnodb引擎锁机制解决死锁问题_第3页
巧用mysqlinnodb引擎锁机制解决死锁问题_第4页
资源描述:

《巧用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>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。