WEB开发网
开发学院数据库DB2 减少与 DB2 for z/OS 的会话:第 2 部分(更多经过... 阅读

减少与 DB2 for z/OS 的会话:第 2 部分(更多经过检验的基础知识和一些新的编程技巧)

 2010-06-16 00:00:00 来源:WEB开发网   
核心提示: 记住,如果部门数少于 20 个(比如 15),减少与 DB2 for z/OS 的会话:第 2 部分(更多经过检验的基础知识和一些新的编程技巧)(3),您不需要编码动态 SQL,您可以在 16 到 20 个主机变量中保留最新的值,我将继续本主题的最后部分,我们将查看更多(更新)的技术,在更新/删

记住,如果部门数少于 20 个(比如 15),您不需要编码动态 SQL,您可以在 16 到 20 个主机变量中保留最新的值。

在更新/删除 —— 获取/更新/获取/更新之前读取行

更有经验的程序员必须克服一些根深蒂固的做法。在以前的日子里,我们必须读取记录来更新或删除。使用 DB2,如果您不需要建立在之前的图像,就不需要读取行来更新和删除它。我常常看到一些批处理程序使用指针获取、更新、获取、更新、获取、更新...,您要做的只是使用 Declare Cursor 中相同的 Where 子句执行合理大小的 SET 更新。而不是:

Declare CursorUpd for 
  Select col1, col2, ... 
  From tableA 
   Where jobcode = :hvj for update of salary 
     
Fetch CursorUpd into :hvcol1, :hvcol2, ... 
Update salary set salary = salary + 1000.00 where current of CursorUpd 

如果需要重复进行获取、更新、获取更新,为什么不:

Update tableA 
 Set salary = salary + 1000.00 
 Where jobcode = :hvj 

SET 处理是关系设计的最大优势之一。您当然必须确保 SET 大小没有使用锁定级联创建无法接受的恢复单元或问题,或者导致其他并发运行程序的锁定问题(比如超时)。

有时候我看到一些上述场景(获取、更新)混合了更新行的一个后续单一实例 SELECT —— 之前读取,更新,之后查看。使用最新的编程技术,同时意识到不需要查看之前图像,我们可以 DECLARE 一个行定位指针,来 SELECT 我们的 SET update,然后 FETCH 一个合理大小的行集合(比如一次 100 行),以查看维护的结果。

单行获取的使用很少。当您可以连接一次就看到 100 行时为何要连接 100 次?

请关注第 3 部分

在下一期中,我将继续本主题的最后部分,我们将查看更多(更新)的技术,来避免或减少与 DB2 的连接。

上一页  1 2 3 

Tags:减少 DB for

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