首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>数据库>IBMDB2>保证DB2获得高性能的10条改善技巧
保证DB2获得高性能的10条改善技巧
来源: 发布时间:2008-06-12 发布人: 浏览: 人次   字体: [ ]  

为保证DB2 DBA 避免性能灾难并且获得高性能,本文主要介绍了一套故障诊断流程。下文中将着重讲解在Unix、Windows和OS/2 环境下使用DB2 UDB电子商务(OLTP应用程序)的10条性能改善技巧。

  10. 监视开关

  确保已经打开监视开关。如果它们没有打开,您将无法获取您需要的性能信息。要打开该监视开关,请发出以下命令: db2 "update monitor switches using
  lock ON sort ON bufferpool ON uow ON
  table ON statement ON"

  9. 代理程序

  确保有足够的 DB2 代理程序来处理工作负载。要找出代理程序的信息,请发出命令: db2 "get snapshot for database manager"
  并查找以下行: High water mark for agents registered = 7
  High water mark for agents waiting for a token = 0
  Agents registered= 7
  Agents waiting for a token= 0
  Idle agents= 5
  Agents assigned from pool= 158
  Agents created from empty Pool = 7
  Agents stolen from another application= 0
  High water mark for coordinating agents= 7
  Max agents overflow= 0
  如果您发现Agents waiting for a token或Agents stolen from another application不为 0,那么请增加对数据库管理器可用的代理程序数(MAXAGENTS 和/或 MAX_COORDAGENTS取适用者)。

  8. 最大打开的文件数

  DB2 在操作系统资源的约束下尽量做一个“优秀公民”。它的一个“优秀公民”的行动就是给在任何时刻打开文件的最大数设置一个上限。数据库配置参数MAXFILOP约束 DB2 能够同时打开的文件最大数量。当打开的文件数达到此数量时,DB2 将开始不断地关闭和打开它的表空间文件(包括裸设备)。不断地打开和关闭文件减缓了 SQL 响应时间并耗费了 CPU 周期。要查明 DB2 是否正在关闭文件,请发出以下命令: db2 "get snapshot for database on DBNAME"
  并查找以下的行: Database files closed = 0
  如果上述参数的值不为 0,那么增加MAXFILOP的值直到不断打开和关闭文件的状态停止。使用以下命令: db2 "update db cfg for DBNAME using MAXFILOP N"

  7. 锁

  LOCKTIMEOUT的缺省值是 -1,这意味着将没有锁超时(对 OLTP 应用程序,这种情况可能会是灾难性的)。尽管如此,我还是经常发现许多 DB2 用户用LOCKTIMEOUT= -1。将LOCKTIMEOUT设置为很短的时间值,例如 10 或 15 秒。在锁上等待过长时间会在锁上产生雪崩效应。
  首先,用以下命令检查LOCKTIMEOUT的值: db2 "get db cfg for DBNAME"
  并查找包含以下文本的行: Lock timeout (sec) (LOCKTIMEOUT) = -1
  如果值是 -1,考虑使用以下命令将它更改为 15 秒(一定要首先询问应用程序开发者或您的供应商以确保应用程序能够处理锁超时): db2 "update db cfg for DBNAME using LOCKTIMEOUT 15"
  您同时应该监视锁等待的数量、锁等待时间和正在使用锁列表内存(lock list memory)的量。请发出以下命令: db2 "get snapshot for database on DBNAME"
  查找以下行: Locks held currently= 0
  Lock waits= 0
  Time database waited on locks (ms)= 0
  Lock list memory in use (Bytes)= 576
  Deadlocks detected= 0
  Lock escalations= 0
  Exclusive lock escalations= 0
  Agents currently waiting on locks= 0
  Lock Timeouts= 0
  如果Lock list memory in use (Bytes)超过所定义LOCKLIST大小的 50%,那么在LOCKLIST数据库配置中增加 4k 页的数量。

  6. 临时表空间

  为了改善 DB2 执行并行 I/O 和提高使用TEMPSPACE的排序、散列连接(hash join)和其它数据库操作的性能,临时表空间至少应该在三个不同的磁盘驱动器上拥有三个容器。
  要想知道您的临时表空间具有多少容器,请发出以下命令: db2 "list tablespaces show detail"
  查找与以下示例类似的TEMPSPACE表空间定义: Tablespace ID= 1
  Name= TEMPSPACE1
  Type= System managed space
  Contents= Temporary data
  State= 0x0000
  Detailed explanation: Normal
  Total pages= 1
  Useable pages= 1
  Used pages= 1
  Free pages= Not applicable
  High water mark (pages)= Not applicable
  Page size (bytes)= 4096
  Extent size (pages)= 32
  Prefetch size (pages)= 96
  Number of containers= 3
  注意Number of containers的值是 3,而且Prefetch size是Extent size的三倍。为了得到最佳的并行 I/O 性能,重要的是Prefetch size为Extent size的倍数。这个倍数应该等于容器的个数。
  要查找容器的定义,请发出以下命令: db2 "list tablespace containers for 1 show detail"
  1 指的是tablespace ID #1,它是刚才所给出的示例中的TEMPSPACE1。

  5. 内存排序

  OLTP 应用程序不应该执行大的排序。它们在 CPU、I/O 和所用时间方面的成本极高,而且将使任何 OLTP 应用程序慢下来。因此,256 个 4K 页(1MB)的缺省SORTHEAP大小(1MB)应该是足够了。您也应该知道排序溢出的数量和每个事务的排序数。
  请发出以下命令: Db2 "get snapshot for database on DBNAME"
  并查找以下行: Total sort heap allocated= 0
  Total sorts = 1
  Total sort time (ms)= 8
  Sort overflows = 0
  Active sorts = 0
  Commit statements attempted = 3
  Rollback statements attempted = 0
  Let transactions = Commit statements attempted + Rollback
  statements attempted
  Let SortsPerTX= Total sorts / transactions
  Let PercentSortOverflows = Sort overflows * 100 / Total sorts
  如果PercentSortOverflows ((Sort overflows * 100) / Total sorts )大于 3 个百分点,那么在应用程序 SQL 中会出现严重的或意外的排序问题。因为正是溢出的存在表明发生了大的排序,所以理想的情况是发现没有排序溢出或至少其百分比小于一个百分点。
  如果出现过多的排序溢出,那么“应急”解决方案是增加SORTHEAP的大小。然而,这样做只是掩盖了真实的性能问题。相反,您应该确定引起排序的 SQL 并更改该 SQL、索引或群集来避免或减少排序开销。
  如果SortsPerTX大于 5 (作为一种经验之谈),那么每个事务的排序数可能很大。虽然某些应用程序事务执行许多小的组合排序(它们不会溢出并且执行时间很短),但是它消耗了过多的 CPU。当SortsPerTX很大时,按我的经验,这些机器通常会受到 CPU 的限制。确定引起排序的 SQL 并改进存取方案(通过索引、群集或更改 SQL)对提高事务吞吐率是极为重要的。


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·DB2数据库常用命令总结以供参考
·如何在DB2中创建一个获取汉字拼音首...
·如何解决DB2数据库代码页不兼容的问...
·什么是db2?
·DB2安装祥细步骤使用指南
·DB2双机安装过程
·DB2数据库优化需掌握的几条基本策略
·六大方式使您轻松执行DB2数据库相关...
·解决DB2创建存储过程时遇到的错误
·DB2数据库实用技巧大放送
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·如何优化DB2数据库,提高Web...
·DB2提示SQL1032N错误信息及其
·DB2数据库实用技巧大放送
·解决DB2创建存储过程时遇到的
·六大方式使您轻松执行DB2数据
·DB2数据库优化需掌握的几条基
热 门 文 章
·DB2安装祥细步骤使用指南
·DB2双机安装过程
·什么是db2?
·如何优化DB2数据库,提高Web...
·DB2数据库实用技巧大放送
·DB2数据库优化需掌握的几条基...
·六大方式使您轻松执行DB2数据...
·DB2数据库常用命令总结以供参...
·解决DB2创建存储过程时遇到的...
·DB2提示SQL1032N错误信息及其...
·如何在DB2中创建一个获取汉字...
·如何解决DB2数据库代码页不兼...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .