【发布时间】:2008-12-25 07:53:23
【问题描述】:
我正在使用 MySql 5.x,在我的环境中,我有一个名为 CALLS 的表。
表 CALLS 有一个列状态,它采用枚举 {inprogress, completed}。
我希望表的读取/更新是行锁定的,所以:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET AUTOCOMMIT = 0;
SELECT amount from CALLS where callId=1213 FOR UPDATE;
COMMIT
基本上,即使在我只需要读取金额并返回的情况下,我也会执行 FOR UPDATE。我发现这使我能够确保防止读取/更新相互干扰。但是我被告知这会降低应用程序的并发性。
有没有办法在不产生锁定开销的情况下实现相同的事务一致性?谢谢。
【问题讨论】:
标签: sql mysql transactions