WEB开发网
开发学院数据库DB2 DB2 V9.7 高可用性灾难恢复中的备机可读 阅读

DB2 V9.7 高可用性灾难恢复中的备机可读

 2010-07-30 00:00:00 来源:WEB开发网   
核心提示: 从上面的结果可以看出,第一条查询语句使用了游标稳定(CS)的隔离级别,DB2 V9.7 高可用性灾难恢复中的备机可读(10),读取不到前一个事务中未提交的记录,第二条查询语句使用了未提交读(UR)的隔离级别,从上面的结果我们可以得出结论,事实上在备机上不论指定任何隔离级别,得到了前一事务中未提交

从上面的结果可以看出,第一条查询语句使用了游标稳定(CS)的隔离级别,读取不到前一个事务中未提交的记录,第二条查询语句使用了未提交读(UR)的隔离级别,得到了前一事务中未提交的记录。

最后,向表中插入一条记录,由于自动提交在这个事务中是打开的,所以这条记录会被自己动提交,能够被其他事务中读取。我们用这条已提交的记录,作为接下来在备机上查询的参考基准。

现在,在备机上运行查询:

清单 16. 在验证备机可读环境下隔离级别时,备机数据库上的命令

 $ db2 SET CURRENT ISOLATION CS 
 DB20000I The SQL command completed successfully. 
 $ db2 "SELECT * FROM test" 
 
 C1 C2 
 ----------- -- 
  0 Z 
  4 A 
  5 B 
  6 C 
 
  4 record(s) selected. 
 
 $ db2 "SELECT * FROM test WITH UR" 
 
 C1 C2 
 ----------- -- 
  0 Z 
  4 A 
  5 B 
  6 C 
 
  4 record(s) selected. 
 
 $ db2 "SELECT * FROM test WITH CS" 
 
 C1 C2 
 ----------- -- 
  0 Z 
  4 A 
  5 B 
  6 C 
 
  4 record(s) selected. 

从上面的运行结果可以看出,备机上的查询不论是游标稳定(CS)还是未提交读(UR)的隔离级别,都获取了主数据库上未提交和已提交的数据。即使在应用程序中使用 SET CURRENT ISOLATION 命令设置非 UR 的隔离级别,查询依旧能够读取到主数据库上已提交和未提交的数据。能够获取其他事务未提交的数据,应用程序必然是在未提交读(UR)的隔离级别上进行的读操作。从上面的结果我们可以得出结论,事实上在备机上不论指定任何隔离级别,查询都会并且只能以未提交读(UR)的隔离级别运行。

上一页  5 6 7 8 9 10 

Tags:DB 可用性 灾难

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接