mysql的innodb死锁问题_MYSQL INNODB死锁有关问题

本文讨论了一个在MySQL中遇到的纯插入操作导致的死锁问题。通过展示表结构和两个并发会话的示例,解释了在插入特定值时发生死锁的情况。尽管存在相关文章和解决方案,但作者寻求更深入的解释,并分享了社区的不同观点。
摘要由CSDN通过智能技术生成

mysql INNODB死锁问题

大家好,今天碰到一个纯insert操作造成的死锁问题,网上查了一下,有人说是由于GAP LOCK,阅读了相关文档以后,还是不能完全理解为什么会产生死锁,希望哪位朋友能帮忙解释一下。

表结构如下:

mysql> show create table MySQLBug;

+----------+----------------------------------------------------------------------------------+

| Table | Create Table |

+----------+----------------------------------------------------------------------------------+

| MySQLBug | CREATE TABLE MySQLBug (

id int(10) unsigned NOT NULL AUTO_INCREMENT,

value int(10) unsigned NOT NULL,

PRIMARY KEY (id),

UNIQUE KEY Test_Index (value)

) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 |

+----------+----------------------------------------------------------------------------------+

1 row in set (0.00 sec)

开启两个不同的会话

session1

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into MySQLBug(value) values(34);

Query OK, 1 row affected (0.00 sec)

mysql> insert into MySQLBug(value) values(680);

ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

mysql>

session2

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into MySQLBug(value) values(680);

Query OK, 1 row affected (0.00 sec)

mysql> insert into MySQLBug(value) values(565); --这句一执行session1就报死锁

搜到一篇文章是类似现象

http://bugs.mysql.com/bug.php?id=51140

在文章的最后面有人给出了一些解释,不过没看太明白,还望大家指点一二,谢谢!

------解决方案--------------------

貌似并不是死锁 而只是锁等待

这是因为锁定了索引所在得页

------解决方案--------------------

多少版本的?我这里没有重现此问题。

------解决方案--------------------

两个SESSION中都执行了insert into MySQLBug(value) values(680);,这样SESSION1就必然要等待SESSION2的提交,

原创文章,转载请注明: 转载自搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值