SQL-92共规定了四种隔离级别,通过选择四个隔离级中的一个,用户能增加对其它未提交事务的暴露程度,获得更高的并发度。隔离级别是一个事务必须与其它事务进行隔离的程度。
SQL-92的四种隔离级别
SQL-92的四种隔离级别
1.READ UNCOMMITTED:脏读(dirty read) 读取未提交的内容
在这个隔离级里面 所有的事务都可以被看到,在这种隔离级里面会出现非常多的问题 在实际中好像很少用到这种隔离级
2. READ COMMITTED :读提交 读取提交的内容
在这个隔离级里 一个事务在开始的时候,只能看见已经提交事务所作的改变,一个事务从开始到提交前,所作的任何数据更改都是不可见的,除非它提交
3.REPEATABLE READ :可重复读
这个隔离级解决了READ UNCOMMITTED 隔离级导致的问题,它能确保同一事务并发读取时会看到相同的数据,但是会出现幻读(phantom read) 就是用户读取一定的数据行时,另一个事务又在该范围内插入新行,当用户在读取该范围的数据时,会发现有新的phantom,
4.SERIALIZABLE 可串行化 是隔离级别最高级,事务之间完全隔离。
这个级别通过强制事务排序,使他们不能冲突,从而解决phantom read问题,SERIALIZABLE在每个数据上都加锁,在这个级别,最容易出现的就是timeout了和lock contention 。
转载于:https://blog.51cto.com/konny/354465