事务隔离级别
(1)Read uncommitted 未提交读(RU)
最弱的隔离级别,事务中的修改即使没有提交,对其他事务也都是可见的。(即脏读)
(2)Read committed 提交读 不可重复读(RC)
大多数数据库系统的默认隔离级别。
解决了脏读的问题,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。
一个事务两次执行同样的查询,可能会得到不一样的结果。
(3)Repeatable read 可重复读(RR)
mysql默认隔离级别。
解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。
该级无法解决幻读的问题,幻读是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻读。
innodb和xtradb存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)解决了幻读的问题。
(4)Serializable 可串行化
该级是最高的级别,通过强制事务串行执行,避免了幻读的问题,该级会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题