我有一个mysql proc,它执行一次读取和一次更新(在2个不同的表中)。为了确保快速读取,我将隔离级别更改为Read Uncommitted。脏读是好的,数据一致性并不重要。但它看起来处于Read Uncommitted Isolation级别,更新速度非常慢 - 事实上它会影响我表中的其他写入。
我的代码看起来像这样
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秒,而之前的读数是<100ms(表有5M-8M记录)。
任何人都可以帮忙指点吗?
我在这里找到了类似的问题,但无法得到答案
Read Uncommitted Isolation Level Impact On Insert/Update Transactions
答案 0 :(得分:0)
尝试
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;