mysql中写操作中事务隔离的影响

时间:2016-11-16 04:43:14

标签: mysql database transactions

我有一个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

1 个答案:

答案 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;