一、死锁示例
考虑下面一个MySQL死锁的示例:
有如下一张表:
CREATE TABLE `test` ( `id` int(20) NOT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
表中有如下数据:
mysql> SELECT * FROM test; +----+------+ | id | name | +----+------+ | 1 | 1 | | 5 | 5 | | 10 | 10 | | 15 | 15 | | 20 | 20 | | 25 | 25 | +----+------+ 6 rows in set (0.00 sec)
当数据库的隔离级别为Repeatable Read或Serializable时,我们来看这样的两个并发事务(场景一):
|
session1 |
session2 |
|
begin; |
|
|
begin; |
|
|
select * from test where id = 12 for update; |
|
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230049.html原文链接:https://javaforall.net
