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

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

 2010-09-16 00:00:00 来源:WEB开发网   
核心提示: 向程序返回一个行在 500 个合格的行中,只有 25 个 CUSTNOs 在工作存储列表中(在从 DB2 返回后,减少与 DB2 for z/OS 的会话:第 3 部分:以不同的思路思考普通事务(3),在程序中拒绝行的条件称为 “Stage 3 谓词” —&m

向程序返回一个行

在 500 个合格的行中,只有 25 个 CUSTNOs 在工作存储列表中(在从 DB2 返回后,在程序中拒绝行的条件称为 “Stage 3 谓词” —— 并且 Stage 3 谓词比 Stage 2 谓词更糟糕)

对每个完全合格行,再次对 DB2 执行 CONNECT,此次进行 DELETE 操作(25 个连接)

为多达 528 CONNECTs 重复 24 次,并且对每个索引和表进行太多的 GET PAGEs。

那么如何在这种条件下减少对话的数量?我建议做 4 方面改善(您可能还记得在 上一专栏的第 2 步 中的建议):

如果可行,在索引中增加 STATUS,来使得有效性只适用索引

改变 CURSOR 来使 ROWSET POSITIONING 每次读取多行

利用 SELECT FROM DELETE 来查看行

通过将数字 INSERT 到 CREATED GLOBAL TEMPORARY TABLE(例如,CTT_CUST)并通过在 SQL 中使用临时表,去掉 STAGE 3 取消资格(程序检查 CUSTNO)

Declare Cursor csr-select-and-delete-old-rows 
 With rowset positioning 
 For 
 Select ponbr, custno, trandate, process-date 
 From final_table 
 (Delete from bigtable 
 Where trandate < current date - 3 months 
  And status = :hv-inactive 
  And custno in (select custno from ctt_cust) 
Open csr-select-and-delete-old-rows 

(一个 CONNECT)

Fetch rowset from final_table 
For 100 rows into 
:hvponbr-array, :hvcustno-array, :hvtrandate-array, :hvprocess-date-array 

上一页  1 2 3 4  下一页

Tags:减少 DB for

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