transaction isolation_level

一   查询数据库事务隔离级别:

      1.   MySQL 查询:    select @@tx_isolation;  默认级别:  REPEATABLE-READ  支持四种级别

      2.   Oracle 查询:     可以通过select flag from v$transaction(判断值)  默认级别:   read committed  只支两种级别

二   设置事务隔离级别:只允许[read committed  |  serializable]

      1.    alter session set ISOLATION_LEVEL = read committed    设置当前session隔离级别

      2.    SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 设置当前事物的隔离级别

二  ANSI事务隔离性级别:

标准的隔离性级别由ANSI SQL标准定义,但是它们不是SQL数据库特有的。JTA也定义了完全相同的隔离性级别。隔离性级别的增加带来了更高成本以及严重的性能退化和可伸缩性: 

1.丢失更新(lost update):  一个事物因异常撤消会影响到另一个事物,只要数据库支持事物,就不会出现实种情况.

2.脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,就会产生脏读.

3.非重复读(nonrepeatabe read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。(A transaction rereads data it has previousy read and finds that another committed transaction has modified or deeted the data.  )

      4.幻读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additiona rows that satisfy the condition.  ) (注:主要针对插入操作)

 

      ANSI/ISO SQ92标准定义了一些数据库操作的隔离级别:

  • 未提交读(read uncommitted)
  • 提交读(read committed)   Oracle默认
  • 重复读(repeatabe read)   类似select * from emp for update 功能查询时加了锁 MySQL默认
  • 序列化(seriaizabe)

    

 Dirty ReadNonRepeatabe Read Phantom Read 
Read uncommitted PossiblePossiblePossible
Read committed not possiblePossiblePossible
Repeatabe read not possiblenot possiblePossible
Seriaizabe not possiblenot possiblenot possible
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值