MySQL 中的事务隔离级别有哪些?

March 17, 2025 / 老大 / 8阅读 / 0评论/ 分类: 数据库

回答重点

在MySQL中,事务隔离级别主要有以下4种:

  1. 读未提交(READ UNCOMMITTED)

  1. 最低的隔离级别,在该级别下,一个事务可以读取到另一个事务尚未提交的数据修改;

  2. 可能会导致脏读问题,读取到其他事物未提交的数据。

  1. 读已提交(READ COMMITTED)

  1. 一个事务可以读取到其他已经提交的事务所做的修改;

  2. 可以避免脏读问题;但是可能引发不可重复读问题,在同一个事务中,相同的查询结果可能返回不同的结果。

  1. 可重复读(REPEATABLE READ)

  1. 可以确保在一个事务中多次查询,返回的结果是一致的(MySQL默认隔离级别);

  2. 可以避免不可重复读问题;但是可能会引发幻读问题,在同一个事务中,多次查询可能返回不同数量的行。

  1. 串行化(SERIALIZABLE)

  1. 最高的隔离级别,在该级别下,事务被强制顺序执行,事务之间不会发生并发执行;数据库会对读取的数据加锁,确保其他事务无法访问这些数据,直到当前事务完成;

  2. 完全避免了脏读、不可重复读和幻读;但是性能最差,因为事务必须顺序执行,相当于一个按顺序执行的单线程操作,可能会导致大量的锁竞争和阻塞,严重影响并发性能。

较低的隔离级别提升了并发性,但可能导致数据不一致;较高的隔离级别能保证数据一致,但降低了并发性。所以在设计应用时,需要在数据一致性和性能之间找到平衡。

一般互联网大厂会选择读已提交级别。

#MySQL(21)

评论