我已经在网上搜索了一段时间,但无法得出结论。
当使用Django项目和MySQL时,我遇到了一个DEADLOCK问题,我认为这是由MySQL中的“Next-Key”锁定引起的。
经过一番搜索似乎PostgreSQL没有使用这种锁定机制,所以它会解决我这个问题,但我有些疑惑,因为我不完全理解PostgreSQL的锁定,我也不确定是什么后果从绩效的角度来看。
如果你能为我解释PostgreSQL的锁定,或者给我另一个研究想法,我会很高兴的。 谢谢。
答案 0 :(得分:0)
只有当SELECT
FOR UPDATE
或LOCK IN SHARE MODE
REPEATABLE READ
(默认值)或SERIALIZABLE
隔离级别{@ 1}}时,InnoDB才会使用下一键锁定。
PostgreSQL没有锁定任何差距;后来由并发事务插入间隙的行只是REPEATABLE READ
事务不可见,所以问题就不存在了。
我不知道为什么MySQL有问题,因为任何InnoDB表都有一个字段DB_TRX_ID
来存储创建该行的事务,但我不能声称自己是MySQL专家。