MySQL 隔离级别性能

标签 mysql concurrency locking

这是 Transaction isolation levels relation with locks on table 的后续问题

我想知道隔离级别之间的速度差异。您可以在级别之间切换获得哪些速度优势?与另一个相比,您能否证明这些中的每一个何时会导致锁定等待?

我也想知道:做这个更新查询:

UPDATE product SET sold = 1 WHERE id = 10 AND sold = 0;

如果有人在执行查询期间修改标志 sold,它会对这些获取级别产生不同的结果吗?

最佳答案

间隙锁定 是 READ COMMITTED 和 REPEATABLE READ 之间的一个常见区别。如果您有并发查询争用相同的间隙锁,这可能会影响锁等待时间。

在您显示的UPDATE查询中,假设id是主键,查询应该使用主键索引来选择单行,因此不会有该查询的间隙锁。


回复你的评论:

锁定对性能没有影响。如果查询必须等待获取查询所需的锁,锁等待可能会延迟执行的开始,但一旦开始执行,它将在任何事务隔离级别中具有相同的性能。 p>

此外,如果没有任何并发​​查询持有所需的锁,则不会有额外的等待锁。

关于MySQL 隔离级别性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217095/

相关文章:

php - 获取插入php后生成的uuid

c++ - 线程安全编程

进程可以等待不是子进程之一的 PID 吗?

c++ - static lock_guard 和 static mutex 也一样吗?

c# - 如何从一个用户控件调用另一个用户控件的方法?

mysql - 更新查询在 mysql 工作台中不起作用

java - 在 Spring Boot 中找不到返回列 'id' 的 SQL 查询

concurrency - X10 并行处理共享变量

java - Java 中的共享集合锁定

java - 在 Oracle 中实现乐观锁