事务隔离级别

来源:互联网 发布:线切割编程指令 编辑:程序博客网 时间:2024/06/08 18:24

大部分情况下,很少用完全隔离的事务,但这就带来了以下的一些问题;

1.脏数据

          第二个事务读取了第一个事务未提交的数据(第一个事务rollback())

2.不可重读

         第一个事务两次读取之间,出现了第二个事务,导致第一个事务两次读取的数据不一样(这里读指读一行数据)

3.幻读

         一个事务执行了两次查询,发现第二次查询结果比第一次查询多出了一行,这可能是因为另一个事务在这两次查询之间插入了新行

 

以下是一些隔离级别,用来防止上面那些问题.

1.读操作未提交

         一个事务在提交前其变化对于其它事务来说是可见的.其它事务可以看到这个事务更改后但未提交的数据,但其它事务不能写入此行数据

2.读操作已提交

       查询只能看到事务提交前的数据,事务更改但未提交的数据是看到不到的

3.可重复读

       说明事务能够再次读取相同的数据而不会失败,但幻读仍然会出现.

4.可串行化

       最严格的事务级别,所有的事务好象一个接一个的进行的,上面可能出现的问题在这个事务隔离级别下都不可能发生.使用这个级别的应用必须准备在串行化失败时重新启动事务.