事务的隔离级别
并发事务带来的问题
1)脏读
第一个事务尚未commit的内容已经被第二个事务读到
2)不可重复读
第一个事务执行更新操作,第二个事务内部在第一个事务更新前后两次读到数据不一样
3)幻读
例如:第一个事务更新所有行,第二个事务新插入一行数据,通常会出现第一个事务执行完成后仍然会出现“未更新成功的行”
4)第一类丢失更新(回滚丢失)
例如:两个事务更新同一行,其中一个回滚导致前一个更新也丢失
5)第二类丢失更新(覆盖丢失)
例如:两个事务更新同一行,后一个事务更新覆盖前一个事务更新的结果
事务的隔离级别
1)READ_UNCOMMITTED
隔离级别最低,并发性能最好,但是会出现脏读、不可重复读、幻读、丢失更新等问题
2)READ_COMMITTED
锁定正在操作的行,这是大多数数据库默认的隔离级别,如sqlserver、oracle
但是会出现不可重复读、幻读等问题
3)REPEATABLE_READ
锁定所操作的所有行,少数数据库的默认隔离级别是这样,如mysql innodb
但会出现幻读问题
4)SERIALIZABLE
隔离级别最高,并发性能最差,锁表,但可避免所有问题
浙公网安备 33010602011771号