我有一个 mysql proc,它执行一次读取和一次更新(在 2 个不同的表中)。为了确保读取速度快,我将隔离级别更改为读取未提交。脏读是可以的,数据一致性并不重要。但它看起来在读取未提交隔离级别,更新非常缓慢 - 事实上它影响了我表中的其他写入。
我的代码是这样的
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT ParentId INTO @ParentId FROM TableA where Id = var_ID;
UPDATE TableB SET Counter = Counter + 1 where Id = @ParentId;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
我假设隔离级别只影响读操作,不影响写操作。在我包含 Set Session.... 语句后,我的数据库性能急剧下降。 TableB 上的所有写入都需要 1-2 秒,而之前是 <100 毫秒(表有 5M-8M 条记录)。
谁能帮忙指点一下?
我在这里找到了类似的问题,但找不到答案
Read Uncommitted Isolation Level Impact On Insert/Update Transactions
最佳答案
尝试
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT ParentId INTO @ParentId FROM TableA where Id = var_ID;
UPDATE TableB SET Counter = Counter + 2 where Id = @ParentId;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
关于mysql - 事务隔离对mysql写操作的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624214/