【问题标题】:How do i acheive the situation where the rows read by one transaction are not allowed to read by another transaction?如何实现一个事务读取的行不允许另一个事务读取的情况?
【发布时间】:2012-07-29 15:35:17
【问题描述】:

如何实现一个事务读取的行不允许另一个事务读取的情况?

从我的一张表中,我需要选择 max(columnA)。有了最大值并基于一些计算,我将不得不执行其他插入语句。

使用可序列化隔离级别,2 个事务正在读取相同的最大值。这会导致一个事务的锁等待和另一个事务的死锁。

【问题讨论】:

标签: mysql transactions isolation-level transaction-isolation


【解决方案1】:

您可能无法仅根据隔离级别来解决此问题。

您可以进行的设计更改是单独存储最大值,并带有一个三阶段标志以及记录说明 - 最大值已处理、处理和未处理。因此,每当事务从表中读取最大值时,它都可以检查最大值是否已被处理。如果是这样,它不会执行其他插入语句。

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 2018-10-02
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2021-12-19
    相关资源
    最近更新 更多