首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > 编程杂谈 > 正文
DB2 数据库 取得最佳性能的准则
来源:68design.net 2007年10月13日 11:40 网友评论:0条 点击:
  并行性:您可以使用 DB2 UDB 目前所使用的三种并行方式。查询并行(多条 I/O 路径)是在 DB2 V3 中引入的。Sysplex 查询并行(一个 DB2 数据共享组中的多用户和多任务)是在 DB2 UDB V5 中引入的。到现在,DB2 已得到极大的发展,并大大地增强了那些处理分区表空间的 DB2 应用程序的并行处理能力。通过增加一定的 CPU 时间,可以大大减少这些查询所需的时间。

  对部分数据进行操作: 分区表空间允许 DB2 实用程序一次处理一个分区的数据,这样其他任务或应用程序就可以并发地对其他分区进行访问。按照类似的方式,您可以将 mass UPDATE、DELETE 或 INSERT 操作拆成多个不同的任务。除了增加可用性以外,这种技术还可以为减少完成这种 DB2 工作所需的时间提供潜力。

  对频繁访问的数据有更快的访问速度: 如果分区索引可以将访问更频繁的行与表中其他的行分开来,那么就可以将这些数据放入到它们专用的分区中,并使用更高速的 DASD 设备。

  通常,表越大,就越有理由将其创建为分区的表。但有时候为较小的表创建分区表空间也很有利。当将 查找(lookup)表与其他较大的分区的表相连接时,通过将查找表也进行分区,可以最大化并行度。

  如果在连接谓词中使用分区键(partitioning key),最后还有一点考虑需要顾及。需要按分区键进行连接的表应该有相同数量的分区,并且应该在相同的值上 断开。

  数据压缩

  DB2 提供了压缩一个表空间或分区中的数据的能力。这是通过在 CREATE TABLESPACE 语句中指定 COMPRESS YES 选项,然后对表空间执行 LOAD 或 REORG 实用程序来实现的。通过用较短的字符串替换经常出现的长字符串,可以压缩数据。这时会建立一个字典,其中包含了映射原始的长字符串与它们的替换值的信息。

  在数据被存储之前压缩数据,以及在从外部存储设备读出数据时将数据解压,这都需要使用一定的 CPU 资源。但是,数据压缩也可以为性能带来好处,因为可以在更少的空间(包括 DASD 和缓冲池中的空间)中存储更多的数据,与未压缩的数据相比,这样可以减少同步读,减少 I/O 等。

  在决定是否压缩一个表空间或分区时,要考虑下面一些事情:

  行的长度: 行的长度越大(尤其是它接近页宽时),压缩的效率就越低。在 DB2 中,行不能跨页,您可能无法实现足够的压缩来使一页可以容纳多行。

  表的长度: 对于更大的表空间,压缩更为有效。对于非常小的表,压缩字典的大小(8 KB 到 64 KB)有可能会抵消掉通过压缩所节省出来的空间。

  数据中的模式: 对于特定的表空间或分区,数据中重复出现的模式的出现频率将决定压缩的效果。有大量重复字符串的数据有巨大的压缩潜力。

  对压缩的估计: DB2 提供了一个独立的实用程序 DSN1COMP,通过执行该实用程序可以判断压缩数据的效果。要了解关于运行该实用程序的更多信息,请参考 DB2 Utilities Guide and Reference 手册。

  处理成本: 压缩和解压数据时,要消耗一定的 CPU 资源。与使用 DB2 软件模拟程序相比,使用 IBM 的同步数据压缩硬件可以大大减少所消耗的 CPU 资源(当 DB2 启动时,它将判断硬件压缩特性是否可用)。

  更好的字典: 当使用 LOAD 实用程序来建立压缩字典时,DB2 使用所装载的前 n 行(其中 n 取决于数据的压缩程度)来决定字典的内容。REORG 使用一种抽样技术来建立字典。它不仅使用所装载的前 n 行,而且还会对该实用程序执行期间剩下的 UNLOAD 阶段中的行进行抽样。因此,REORG 常常可以产生更能代表整个表空间或分区中的数据的字典。

  如果您的环境可以从压缩中得到好处,通常我们建议压缩那些 DB2 表空间和分区,因为由于更少空间容纳更多数据所带来的性能优势几乎总是大于压缩和解压数据时所需的 CPU 资源消耗。

  装载大型的表

  当处理大量的数据时,一开始将数据装载到表中时可能会遇到性能问题。为了在装载过程中实现并行性,可以手动地创建多个 LOAD 任务,每个分区对应一个任务,或者,也可以在单个 LOAD 实用程序中装载多个分区。每个分区都展开在 I/O 子系统上,从而更易于达到最佳的并行度。

  为了获得最佳性能,在 LOAD 语句中指定 SORTKEYS 参数也很重要。这将指示 DB2 将索引键传递给内存中的排序程序,而不是再次将这些键写到 DASD 上的排序工作文件中,然后从中读取这些键。SORTKEYS 还允许装载和排序之间的重叠,因为排序是作为一个单独的任务运行的。

  下面给出了关于装载大型表的其他建议:

  1、一次只 LOAD 一个表。
  2、如果可能,为那些预计将历时最长的任务提供较高的优先级。
  3、将工作分布在 sysplex 上。

  将辅助索引拆分成数块,以实现并行性(请参阅下面题为 PIECESIZE 的讨论)。
在开始装载数据时,指定 LOG NO (用以防止日志记录,以及节省日志记录所消耗的大量资源),然后在成功装载数据之后运行一个映像拷贝。

  空余空间方面的考虑

  分配空余空间的主要目的是使数据行的物理顺序与群集索引一致,以减少频繁重组数据的需要。此外,对行的更好的群集会使读访问的速度更快,行插入的速度也更快。然而,过多地分配空余空间可能会产生浪费的 DASD 空间,导致每次 I/O 只能传输更少的数据,缓冲池的利用效率更低,并且要扫描更多的页。

  表空间和索引中空余空间的分配是由 CREATE 或 ALTER TABLESPACE 以及 CREATE 或 ALTER INDEX 语句的 PCTFREE 和 FREEPAGE 选项确定的。

  PCTFREE 告诉 DB2 在装载或重组数据时,表空间或索引中的每个页要留出多少百分比的空余空间。如果没有足够的空余空间来按照 恰当的顺序(也就是按群集顺序)编写行或索引,那么 DB2 就必须将多出的数据放到另一个页上。当越来越多的记录被乱序存放时,性能就会出现问题。

  FREEPAGE 告诉 DB2 在装载或重组数据时,应该过多久就分配一整页的空余空间。例如,如果指定了 FREEPAGE 5,那么 DB2 将在用数据填充了 5 个页之后分配一页的空余空间。如果表行大于页宽的一半,则应该使用 FREEPAGE,因为在那样的环境下不能在一页上再 INSERT 一行。

  是否定义带空余空间的表空间,以及分配多少的空余空间,这很大程度上取决于表空间中表的 INSERT 特征(其次是 DELETE 活动)。换句话说,这取决于将行添加到表中的频率,以及将行添加到表的什么地方。下面有 4 种类别:

  只读表: 如果对于一个表没有任务更新活动,那么可以将其定义为没有空余空间。而且,也没有任何必要去运行 REORG 实用程序。

  随机插入: 对于已经有很多行、并且 INSERT 活动的级别很低,那么一开始可以使用默认的 PCTFREE(对于表空间,该值是 5,对于索引,该值是 10)。然后使用 RUNSTATS 监控数据失序的程度,再考虑您期望运行 REORG 的频率,对 PCTFREE 进行必要的上下调整。对于 INSERT 活动级别很高的表,可能需要使用大于默认值的 PCTFREE。对于开始为空或者只包含很少行的表(例如在新数据库的部署期间),可能需要指定一个较高的 PCTFREE,并不时地运行一下 REORG,直到这个表被填充好为止。

  在表的末尾插入: 如果一个表中的行的长度不会增长,那么就无需分配空余空间,因为这些行是在表的末尾插入的。由于这些行是按照物理的群集顺序来写的,因此不需要运行 REORG。但是,如果一个表包含可更新的 VARCHAR 列,或者该表被压缩,那么有可能行的长度会增长,从而导致某一行被转移到其他页上。您可以通过对表空间执行 RUNSTATS,然后检查 DB2 编目表 SYSIBM.SYSTABLEPART 的 NEARINDREF 和 FARINDREF 这两列来判断上述情况。如果表变得缺乏组织,那么为表空间指定一个 PCTFREE,并继续用 RUNSTATS 监控 位置不当(mislocated)的行。根据当前的数据以及您所观察到的趋势,对 REORG 的频率和 PCTFREE 的数字进行相应的调整。通过在 REORG TABLESPACE 中指定 INDREFLIMIT 和 REPORTONLY 选项,可以监控被更新的 DB2 表中位置不当的行的数目,以及隔多远会出现这样的行。

首页 上一页 [1] [2] [3] [4] [5] 下一页 尾页
上一篇:介绍VS 2008和.NET 3.5 Beta2版本新特性   下一篇:浅谈Linq To Sql集成数据库语言的优劣
收藏此页】【打印】【关闭
 相关文章  我要点评
·优化Oracle DBA数据库性能体会分享
·Oracle数据库查询十个小技巧
·ORACLE数据库的统一命名与编码规范
·Oracle 10g学习之数据库恢复
·IBM DB2数据库的常用日期操作函数
·解决Oracle数据库运行错误的方法
·优化SQLServer数据库服务器内存的配置
·解决Sybase数据库乱码问题的方法

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】