数据库的隔离级别
脏读(dirty read),即一个事务读取了另一事务尚未提交的数据,注(这在mysql中存在这个级别,在oracle中不存在)。
这两种情况分别为:
一,
1 比如事务一先读出此条数据,这时事务二对这条数据进行了更新操作并提交事务;
2 这时候事务一还没进行完,这时如果事务一再对此条数据进行读操作,那么所读出的数据和第一所读出的数据是不一致,这也就是典型的不可重复读。
二,上面的1步骤是相同的,这时2步骤中的事务一不是对此条数据进行再查询操作,而是对她进行更新或是回滚,这时事务一没有发现事务二所进行的操作,这种情况也被称为第二类不丢失更新。
幻读(phantom read),即涉及到的操作为整个表,如第一事务采取了对整个表的操作,如对整个表求记录个数,对整个表进行更新。这时候第二个事务添加或是删除了表中的一条数据。而第一个事务还没有执行完毕,这时也就出现了整个表中的个别数据操作的不一致现象。
隔离级别设置:
1.隔离级别 read uncommitted (1)
级别read uncommitted(又称读取未提交内容)允许任务读取数据库中未提交的数据更改。
2.隔离级别 Read Committed(2)
级别Read Committed(又称读取已提交内容)可防止脏读。
级别read uncommitted(又称读取未提交内容)允许任务读取数据库中未提交的数据更改。
2.隔离级别 Read Committed(2)
级别Read Committed(又称读取已提交内容)可防止脏读。
3,隔离级别 repeatable read(4)可以防止不可重复读
4.隔离级别Serializable(8)
级别Serializable(可串行化)可防止幻像和非重复读。