MySQL 中的事务隔离级别有哪些?
回答重点
在MySQL中,事务隔离级别主要有以下4种:
读未提交(READ UNCOMMITTED)
最低的隔离级别,在该级别下,一个事务可以读取到另一个事务尚未提交的数据修改;
可能会导致脏读问题,读取到其他事物未提交的数据。
读已提交(READ COMMITTED)
一个事务可以读取到其他已经提交的事务所做的修改;
可以避免脏读问题;但是可能引发不可重复读问题,在同一个事务中,相同的查询结果可能返回不同的结果。
可重复读(REPEATABLE READ)
可以确保在一个事务中多次查询,返回的结果是一致的(MySQL默认隔离级别);
可以避免不可重复读问题;但是可能会引发幻读问题,在同一个事务中,多次查询可能返回不同数量的行。
串行化(SERIALIZABLE)
最高的隔离级别,在该级别下,事务被强制顺序执行,事务之间不会发生并发执行;数据库会对读取的数据加锁,确保其他事务无法访问这些数据,直到当前事务完成;
完全避免了脏读、不可重复读和幻读;但是性能最差,因为事务必须顺序执行,相当于一个按顺序执行的单线程操作,可能会导致大量的锁竞争和阻塞,严重影响并发性能。
较低的隔离级别提升了并发性,但可能导致数据不一致;较高的隔离级别能保证数据一致,但降低了并发性。所以在设计应用时,需要在数据一致性和性能之间找到平衡。
一般互联网大厂会选择读已提交级别。
#MySQL(21)评论