从锁定的角度来看,Django中的MySQL vs PostgreSQL

时间:2017-03-09 14:39:56

标签: mysql django postgresql

我已经在网上搜索了一段时间,但无法得出结论。

当使用Django项目和MySQL时,我遇到了一个DEADLOCK问题,我认为这是由MySQL中的“Next-Key”锁定引起的。

经过一番搜索似乎PostgreSQL没有使用这种锁定机制,所以它会解决我这个问题,但我有些疑惑,因为我不完全理解PostgreSQL的锁定,我也不确定是什么后果从绩效的角度来看。

如果你能为我解释PostgreSQL的锁定,或者给我另一个研究想法,我会很高兴的。 谢谢。

1 个答案:

答案 0 :(得分:0)

只有当SELECT FOR UPDATELOCK IN SHARE MODE REPEATABLE READ(默认值)或SERIALIZABLE隔离级别{@ 1}}时,InnoDB才会使用下一键锁定。

PostgreSQL没有锁定任何差距;后来由并发事务插入间隙的行只是REPEATABLE READ事务不可见,所以问题就不存在了。

我不知道为什么MySQL有问题,因为任何InnoDB表都有一个字段DB_TRX_ID来存储创建该行的事务,但我不能声称自己是MySQL专家。