WHERE id IN (...)似乎会锁定所有行。这会导致死锁,因为线程试图获取由(所有)其他线程锁定的记录上的X锁。, (37), (87)使用两个线程的步骤:
线程A:获取锁启动事务;从id IN (1、2、3、4、5)锁定共享模式的项中选择线程B:获取锁启动事务;从id IN (6、7、8、9、10)锁定共享模式的项中选择</
MYSQL VERSION : 5.7.X我有一个大致的想法,读提交的隔离将主要使用共享和独占记录锁。但是,根据mysql的文档,在某些情况下,甚至读提交也必须使用间隙锁定。
阅读承诺..。对于锁定读取(选择用于更新或锁定共享模式)、UPDATE语句和DELETE语句,InnoDB只锁定索引记录,而不锁定前面的空白,从而允许在锁定的记录旁边自由插入新记录。间隙
exceptions.UnableToExecuteStatementException: org.postgresql.util.PSQLException: ERROR:在或接近"UPDATE“位置或附近的语法错误: 18 [语句:”BEGIN;在共享行排它模式下锁定表:键,:不存在的值(从向上插入选择*);提交;“,定位:”开始“;在共享行排他模式下锁定表druid_config;使用upsert AS (UPDATE druid_config SET