[DB2]数据库设计:取得最佳性能的准则 (9)

发表于:2007-05-26来源:作者:点击数: 标签:
六、并行处理方面的考虑 这些年,DB2通过实现各种并行处理的方法,已经大大提高了访问数据的 性能 。为了提高数据密集型只读查询的性能,DB2 V3引入了查询I/O并行。在这种并行中,DB2充分利用分区表空间促成的可用I/O带宽。通过这种方法,DB2可以为单个I/O请
六、并行处理方面的考虑

 

 

  这些年,DB2通过实现各种并行处理的方法,已经大大提高了访问数据的性能。为了提高数据密集型只读查询的性能,DB2 V3引入了查询I/O并行。在这种并行中,DB2充分利用分区表空间促成的可用I/O带宽。通过这种方法,DB2可以为单个I/O请求启动多个并发的I/O请求,并在多个数据分区上执行并行I/O处理。这通常可以显著减少I/O bound查询所需的时间,而代价只是稍微增加的CPU时间。

 

 

  DB2 V4引入了另一种并行技术,这种技术称作查询CP并行。这种方法将并行处理扩展到过程密集型(process-intensive)查询中来。通过这种方法,一条查询可以使DB2生成多个任务,这些任务被并行地执行,以访问数据。分区表空间最能体现这种并行所带来的性能提高。

 

 

  DB2 UDB V5引入了sysplex查询并行,进一步扩展了并行处理。CP并行可以在DB2子系统中为一条查询使用多个任务,而sysplex查询并行这种方法使一个DB2数据共享组中的所有成员可以一起处理一个查询。对于那些主要是只读形式的I/O密集型和处理器密集型查询,都可以从这种并行中得到好处。

 

 

  1. 支持并行访问

 

 

  DB2环境中对并行的支持有一个度的问题。首先,在DB2子系统级,并行访问是在安装面板DSNTIP4上控制的。DSNTIP4上的MAX DEGREE选项决定了最大并行度(并行任务的最大数量)。默认值是0,这意味着对于DB2可能调用的并行度没有上限。我建议您先估计z/OS环境中的虚拟存储能力和局限性,这样DB2就不至于创建多于虚拟存储所能处理的并行任务。

 

 

  您可以通过BIND PLAN和BIND PACKAGE命令的DEGREE选项来控制DB2是否利用并行处理。若指定DEGREE(1),表示禁止并行处理,若指定DEGREE(ANY),则表示支持并行处理。为获得更大的灵活性,动态SQL允许通过SET CURRENT DEGREE语句在一个计划或包中更改这个选项,该语句可以控制专用寄存器中的值。

 

 

  当一个计划或包与DEGREE(ANY)捆绑在一起,或者CURRENT DEGREE寄存器被设为ANY时,DB2优化器将考虑对于最有效的顺序计划,并行是否可行。如果并行不可行,那么就选择次好的顺序计划。

 

 

  2. 限定分区扫描

 

 

  限定分区扫描允许DB2将数据扫描限制在一个分区表空间中。根据SQL谓词中的值,DB2可以判断可能包含SQL语句所请求的表行的最低分区和最高分区,然后将数据扫描限制在这一范围内的分区中。为了使用这种技术,SQL必须提供分区索引的第一个键列上的一个谓词。

 

 

  3. 并行方面的建议

 

 

  为了进一步促进并行处理所能带来的性能提高,下面列出了一些需要考虑的事情:

 

 

  1)尽可能均匀地对表空间分区,因为数据不整齐会对并行度产生影响。一般来说,DB2根据最大物理分区的大小将表空间分成逻辑上的几块。

 

 

  2) 为DB2应用程序的处理分配尽可能多的中央处理器(central processor,CP),以及尽可能多的 I/O 设备和路径。

 

 

  3) 对于I/O密集型查询,应确保分区的数量与可以访问该表空间的I/O路径的数量一致。

 

 

  4) 对于处理器密集型查询,应确保分区的数量等于将被分配用来在数据共享组上处理查询的CP的数量。

 

 

  5) 将用于表空间和索引的分区放在单独的DASD卷中,并且,如果可能的话,要隔开控制单元,以减少I/O争用。

 

 

  6) 按时执行RUNSTATS实用程序,以获得分区级的统计信息。

 

 

  7) 监控虚拟缓冲池的阈值和使用情况,确保提供了足够的缓冲池空间来最大化并行度。

原文转自:http://www.ltesting.net