MySQL隔离级别,衡量它们对死锁的影响

时间:2012-02-10 13:49:27

标签: mysql transactions locking deadlock isolation-level

我正在尝试使用sysbench基准测试(默认配置)生成一些图,试图显示MySQL中死锁和隔离级别之间的关系。

但是我得到了一些结果:我的印象是可重复读取会比读取提交更多死锁(在这种情况下),但远远超过未提交的读取。事实上,事实证明,未提交的读取具有比任何一个更多的死锁。

这是正常的吗?如果是这样,为什么?

1 个答案:

答案 0 :(得分:1)

Deadlock can happen in any isolation level。没有实际测试很难说,但我想在读取提交/可重复读取的情况下,如果您必须读取正在更新的行的值,则从回滚日志中读取该值,但是在读取的情况下未使用uncommited回滚日志,因此该行被锁定以进行更新,读取必须等待写入实际值。但这是一个疯狂的猜测,在读取中有更多的死锁是一种奇怪的行为,而且最有可能 - 依赖于实现。如果您可以提供实际测试,并且测试可以在不同版本的MySQL中重复,我会感兴趣。