ANSI/ISO SQL规定了四种事务隔离级别,分别是:read uncommitted,read committed,repeatable read,serializable
ORACE提供了SQ92标准中的read committed和seriaizabe,同时提供了非SQ92标准的read-ony。
read committed:
- 这是ORACE缺省的事务隔离级别。
- 事务中的每一条语句都遵从语句级的读一致性。
- 保证不会脏读;但可能出现非重复读和幻像。
seriaizabe:(串行执行事务,并发性最小)
- 简单地说,seriaizabe就是使事务看起来象是一个接着一个地顺序地执行。
- 仅仅能看见在本事务开始前由其它事务提交的更改和在本事务中所做的更改。
- 保证不会出现非重复读和幻像。
- Seriaizabe隔离级别提供了read-ony事务所提供的读一致性(事务级的读一致性),同时又允许DM操作。
如果有在seriaizabe事务开始时未提交的事务在seriaizabe事务结束之前修改了seriaizabe事务将要修改的行并进行了提交,则seriaizabe事务不会读到这些变更,因此发生无法序列化访问的错误。(换一种解释方法:只要在seriaizabe事务开始到结束之间有其他事务对seriaizabe事务要修改的东西进行了修改并提交了修改,则发生无法序列化访问的错误。)
read-ony:
- 遵从事务级的读一致性,仅仅能看见在本事务开始前由其它事务提交的更改。
- 不允许在本事务中进行DM操作。
- read ony是seriaizabe的子集。它们都避免了非重复读和幻像。区别是在read ony中是只读;而在seriaizabe中可以进行DM操作。
- Export with CONSISTENT = Y sets the transaction to read-ony.
设置隔离级别
设置一个事务的隔离级别
- SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
- SET TRANSACTION READ ONLY;
设置增个会话的隔离级别
- ATER SESSION SET ISOLATION_LEVE SERIALIZABLE;
- ATER SESSION SET ISOLATION_LEVE READ COMMITTED;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/165278/viewspace-440752/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/165278/viewspace-440752/