DB2 LUW的性能自动监控(下)

 ——监控与维护

一.监控DB2的环境

      为了便于对DB2 LUW实例的调优和维护,应该周期性的监控整个DB2的环境。

DB2监控方法

      当监控一个运行在Linux, Unix, 或者Windows上的DB2 实例时,你有2个监控选项:快照监控和事件监控。无论你选择哪一项,你都需要将监控到的信息保存到一个文件或DB2 的表中。

DB2快照监控

      如题目所说,快照监控就是收集一个指定时间点的数据库活动的快照。快照监控会提供详细的性能信息。这不仅对分析性能问题有用,而且通过快照对趋势分析也是非常有用。

      为了得到快照,你需要发布一个GET SNAPSHOT的命令。你可以通过命令配置快照仅得到你关心的数据,如锁或者BufferPool的使用。任何一个事务的性能信息都是基于指定的时间点的活动的事务。

DB2事件监控

       事件监控收集指定的时间段中指定的事件,如死锁,连接和SQL语句。事件监控可通过跟踪趋势和单独的问题事务分析工作负荷。通过CREATE EVENT MONITOR SQL语句启用事件监控。

开始自动调整

      在早期的DB2 LUW版本中,数据库和实例或多或少的需要静态配置。在修改参数时实例或数据库需要设置为脱机。从V8 版本开始后逐渐有了自动调整进程:当你启动了动态修改参数后者不需要关闭数据库。然而,却有很多限制。

DB2自动调整内存管理(STMM)

      在DB2 LUW的 v9.1版本中,IBM引入了自动调整内存管理package cache, sort heap, bufferpools, 和 locklists 。 在按照maximum参数分配给数据库内存后,大量的内存分配给了这些区域。你可以设置为自动内存调整,但从整体上说,应该先设置为自动内存调整,在一些典型的工作量下运行一段时间后关闭自动调整。

      使用自动内存调整是有局限性的。如,在一个工作量不变的环境中自动调整内存可能不是一个好的选择因为DB2可能永远都计算出一个最优的调优级别。

      自动化的程度在逐步的好转。在DB2 LUW的v9.5版本中,你可以设置instance level, database heap以及 new application的自动内存调整。如果你设置database_memory为AUTOMATIC,DB2 也将动态调整共享内存根据数据库的负载。

      如果你想查看当前内存的分配请款,你可以通过一个快照或通过GET DATABASE CONFIGURATION命令。所有的内存更改记录被记录在了STMMLOG字典的内存调整文件中。

二.维护

      两个最重要维护工作是数据重组对性能的影响和收集统计信息。以下将讨论关于以上两点并阐述一些现在可用的有效自动维护。

DB2数据重组

      维护数据的物理组织对稍描索引和数据的性能是重要的。当数据发生插入,更新或删除都回到之数据组织的改变。增加的I/O和获得页都会降低性能。

      DB2 的目录统计可以帮助你求出何时需要数据重组。

监控什么

      你可以运行REORGCHK命令来识别需要重组的表,也可以通过目录统计查看以下:

收集统计信息

       事件监控收集指定的时间段中指定的事件,如死锁,连接和SQL语句。事件监控可通过跟踪趋势和单独的问题事务分析工作负荷。通过CREATE EVENT MONITOR SQL语句启用事件监控。

开始自动调整

      为了得到正确的访问路径需要收集精确的统计信息。还可以监控和评估增长导致所需的数据重组。在LOAD, REORG 或者 REBUILD IINDEX后需要运行RUNSTATS程序。

      在运行RUNSTATS后,你可能需要重新连接应用。总而言之在如下原因导致运行RUNSTATS后都需要重新连接应用:

  • Before REBIND
  • New index has been created
  • The cluster ratio changes to greater than or less than 80%
  • Cardinality changes by more than 20%
  • Index LEAF distance changes by 20%

DB2自动维护

      在DB2 LUW v9.5版本之前,自动程序需要通过控制台或自动向导手动收集数据。现在通过一个XML文档建立的自动维护策略可以自动运行RUNSTATS 和 REORG命令收集被选中的对象的信息。

自动收集统计信息

      自动统计在DB2 8.2版本时被引入,并允许每隔2个小时检测一次统计信息。基于分析统计信息在需要时被收集。

      DB2 LUW v9.5版本可以适时地收集统计信息。当一个查询发生,通过解释,优化进程,与其所引用的表的信息同时被收集。统计信息收集的时间被优化概要文件控制。默认为5秒,如果RUNSTATS 命令超过5秒将被后台进程所关掉。当数据库被创建,统计信息自动收集默认是被开启的。

参数配置

  • AUTO_RUNSTATS=ON
  • AUTO_STMT_STATS=ON
  • AUTO_REORG = ON
  • AUTO_TBL_MAINT = ON
  • AUTO_MAINT=ON

      在DB2_OPTSTATS_LOG日志文件中,RUNSTATS活动会被记录。文件可以手动或通过SYSPROC.PD_GET_DIAG_HIST函数查看。

性能影响

      为了减小对性能的影响,适时异步进程基于数据库活动执行调节RUNSTATS命令。

统计概要文件

      统计概要文件控制着RUNSTATS命令执行时所收集的统计信息。统计概要文件可以通过配置SET PROFILE 参数设置为手动运行RUNSTATS,也可以通过AUT_STATS_PROF 与AUTO_PROF_UPD参数设置为自动收集。

自动重组

      新的自动重组是一个全新的自动重组-REORGCHK。如果REORGCHK发现索引或表需要重组,它会马上调度一个重组作业。

配置参数

  • AUTO_REORG = ON
  • AUTO_TBL_MAINT = ON
  • AUTO_MAINT=ON

总结

      好的性能会使客户得到满意。DB2 的新特点会极大地改善你的DB2 LUW环境,降低宕机时间。切记,调整不是"设置了它并忘记了它"的过程:要经常监控,随着应用环境的改变,而不断地调整。

(北京铸锐数码科技有限公司 www.InnovateDigital.com