mysql - 事务隔离对mysql写操作的影响

标签 mysql database transactions

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

相关文章:

mysql - 如何从mysql表中删除重复的文本记录

java - JMS回滚有多可靠?

mysql - 如何在查询执行期间发生错误时自动关闭 python 中的 MySQL 连接?

Mysql 访问需要 sudo 命令才能启动

mysql - 如何在MySql中转义撇号(单引号)?

php - Yii 选择 mysql 进程列表

mysql - WordPress 查询时间慢

php - 每天统计/计算 mysql 结果

java - Oracle Select for update 不起作用,有时会在一段时间后挂起

php - Mysql 选择行求和