减少与 DB2 for z/OS 的会话:第 3 部分:以不同的思路思考普通事务
2010-09-16 00:00:00 来源:WEB开发网在行的每个列中包含 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 个
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››Form Reset Function
- ››db2 命令选项解释
- ››FOREACH 宏之GCC实现
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
更多精彩
赞助商链接