[英]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.