繁体   English   中英

具有PESSIMISTIC_WRITE锁定的REPEATABLE_READ隔离级别

[英]REPEATABLE_READ isolation level with PESSIMISTIC_WRITE lock

现在,我正在阻止多个实例中的多个用户使用PESSIMISTIC_WRITE锁访问数据库表的同一行。 锁定行的事务的默认隔离级别设置为REPEATABLE_READ

在表为空的情况下,它会用新条目重新填充,在这里它会变得很奇怪。 插入是在单独的事务中运行的异步批量插入。 因此,在提交此数据时,用户将读取一行以进行更新,该行应锁定该行。 不知何故,它不再起作用了,几个用户可以从同一行中获取值。

在试图弄清楚这一点时,我将隔离级别更改为READ_COMMITED ,此问题不再发生。

有人能启发我这怎么可能吗? 我想念什么?

这是一些psyeudo代码,可以帮助您更好地理解:

异步加注

Transaction
get values to insert
bulk insert

获得价值

Transaction
read a row for update (Locks it)
do stuff
delete the row

对于锁定,我们使用来自弹簧数据的此注释: @Lock(LockModeType.PESSIMISTIC_WRITE)

好的,答案是,对aurora 2.x的aurora prier使用的是MySQL 5.6.10。 Aurora 2.x现在使用MySQL 5.7.12,问题是一个已修复的错误。

PS:我仍然在问自己,为什么aurora使用2年的MySQL版本,但这是一个不同的故事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM