我需要首先选择数据库中的10000行并返回它们。一次执行此操作的客户可能会更多。我想出了一个问题: from tblRedir v select top 10000 id where batch_Id is null ) v2 on v.id=v2.id
它是由update和嵌套select组成的操作。这两个查询都在同
(Util.java:389) at com.mysql.jdbc.SQLError.createSQLException我使用MySQL版本5.6.26。根据MySQL日志,看起来第一个事务已经获得了下一个ID,并且正在插入一个作业实例。日志,所有涉及的锁都在同一个表上。在插入之前,MySQL锁定索引中的记录,并发事务之间会发生死锁。
根据,更新锁可以在需要写入的时候转换为独占锁。同时,三个锁(X、S和U)的兼容性可以参考下表。X S US ✗ ✓ ✓然而,在一些博客中提到,从MySQL 5.7开始就有一个SX锁,它实现了B-树上操作的文件并发(1977通过这些博客,我发现SX锁与update锁非常相似。例如,它们具有相同的兼容性表。
由于我找不到更多关于MySQL中SX锁的“正式”介绍