WEB开发网
开发学院数据库DB2 减少与 DB2 for z/OS 的会话:第 3 部分:以不同的... 阅读

减少与 DB2 for z/OS 的会话:第 3 部分:以不同的思路思考普通事务

 2010-09-16 00:00:00 来源:WEB开发网   
核心提示: 在行的每个列中包含 WHERE 子句谓词,来确定每列的值是否与其初始值相同,减少与 DB2 for z/OS 的会话:第 3 部分:以不同的思路思考普通事务(2),在重要的、与我们相关的列中包含 WHERE 子句谓词,我们肯定想确保行仍然合格,向表发出 GET PAGE 请求,然后可能需要等待

在行的每个列中包含 WHERE 子句谓词,来确定每列的值是否与其初始值相同。

在重要的、与我们相关的列中包含 WHERE 子句谓词。我们肯定想确保行仍然合格,并且我们想验证我们所选的、未变化的列。

为提高性能而进行的主要变化

具有 TRANDATE、PROCESS-DATE、以及 CUSTNO 的索引,希望 FETCH 行,并提交报告,如下情况的行将被删除:时间超过 3 个月、无效、并在程序工作存储中的清单中发现 CUSTNO。

您可以:

Declare Cursor csr-delete-old-rows for 
 Select ponbr, custno, trandate, process-date 
 From bigtable 
 Where trandate < current date - 3 months 
 And status = :hv-inactive 
     
Open csr-delete-old-rows 
 
Fetch csr-delete-old-rows into 
 :hvponbr, :hvcustno, :hvtrandate, :hvprocess-date 
 
Write to a report 
 
Delete from bigtable         
 Where current of csr-delete-old-rows 

如果有 3,000 个索引行指向具有 TRANDATE 超过 3 个月的表行,但是,3,000 个表行中只有 500 个其 STATUS为 “inactive”,那么最坏情况是您需要:

为 OPEN 进行 CURSOR 设置,CONNECT 到 DB2

为每个 FETCH,CONNECT 到 DB2。然后,对于 3,000 连接中的每个:
a. 对索引树 multi-level 中的页,发出多个 GET PAGE 请求
b. 读取 6 个索引项的平均值
c. 对于 6 个 RIDs 索引中的每个,向表发出 GET PAGE 请求,然后可能需要等待 I/O 同步
d. 完成对表的 GET PAGE 请求(并读取 I/Os)后,向这 6 个表行应用 STATUS 谓词,拒绝 5 个并接受 1 个

上一页  1 2 3 4  下一页

Tags:减少 DB for

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