概念:事务是一组原子的SQL查询语句,也可以叫做一个工作单元;所谓原子的SQL也就是指,事务内的语句要么都执行,要么一句也不执行。
SQL标准定义的四种事务隔离级别:
1、READ UNCOMMITTED:即读取为提交内容,在此隔离级别,所有事务都可以看到为提交事务的结果,但读取未提交数据,又被称为脏读,故一般不用。
2、READ COMMITTED: 即读取提交内容,此隔离级别为大多数数据库系统默认事务隔离级别,一个事务在提交前,所作的任何数据改变都是不可见的,除非已经提交,这种隔离级别也支持所谓的不可重复读,用户运行同一语句两次,看到的结果却可能是不一样的。
3、REPEATABLE READ:即可重读,此事务级别解决了READ UNCOMMITTED隔离级别导致的问题,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行,不过理论上可能会导致另一问题–幻读,即当用户读取某一范围数据时,另一事务又在该范围内插入了新行,用户再次读取时会出现新的数据行。
4、SERIALIZABLE:即可串行化,此事务隔离级别是最高级别隔离级,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题,简而言之,该事务i隔离级别是在每个读的数据行上加锁。在这个级别,可导致大量的超时现象和锁竞争现象,用户很少采用此隔离级别,当然,如果用户的应用为了数据的稳定性,需要强制减少并发的花,可以选择此级别。
隔离级别 脏读 不可重复读 幻读 加锁读
read uncommitted 是 是 是 否
read committed 否 是 是 否
repeatable read 否 否 是 否
serializable 否 否 否 是