INFORMIX数据库隔离级别
多个事务对相同记录的并行访问,数据库提供隔离级别来控制数据的并发访问。隔离级别指定在执行并发 SQL 事务期间会出现的现象。可能会出现以下现象:
l 脏读。SQL 事务 T1 修改一行。然后 SQL 事务 T2 在 T1 执行 COMMIT 之前读取该行。如果 T1 接着执行 ROLLBACK,则 T2 将已经读取一个从未提交的行,因而也可以认为是一个从未存在过的行。
l 不可重复读取。SQL 事务 T1 读取一行。然后 SQL 事务 T2 修改或删除该行并执行 COMMIT。如果 T1 接着尝试重新读取该行,T1 可能会收到修改后的值或发现该行已被删除。
l 幻像行。SQL 事务 T1 读取满足某些搜索条件的多行的集合 N。然后 SQL 事务 T2 执行生成满足 SQL 事务 T1 所使用的搜索条件的一个或多个新行的 SQL 语句。如果 T1 接着使用相同的搜索条件重复原先的读取,则 T1 收到一个不同的多行的集合。
脏读,
下面通过示例说明dirty read(DR)--脏读 和 commited read (CR)—提交读两种数据库并行访问策略。
设置隔离级别方法:
DR:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
或者
Set isolation to dirty read;
CR:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
或者
Set isolation to commited read;
测试示例:
Create table test(t1 integer);
三个事务T1、T2、T3对表test1进行并发访问。