信息化 频道

四两拨千斤 使用DB2自动优化配置

  【IT168信息化】

  部署优化的问题提出

  我担任技术顾问的一家大型国企近日上线了一套基于DB2的营业分析系统,该系统的责任管理员多年来一直担任着Oracle系统的系统管理员,但对DB2来说则是初来驾到,尚未找到门道!

  该系统近日有了一些性能上的麻烦:随着系统数据的不断注入,系统的查询和统计性能呈加速度下降趋势,这令我的这个朋友彷徨不已、如坐针毡!

  因此电话打到了我这里。

  已经习惯于使用Oracle AWR和ADDM工具的这位管理员只有一个问题:DB2对应的工具在哪里?

  我的回答是:DB2有类似的工具,但实际上DB2提供了更为简单的工具(AUTOCONFIGURE工具),为什么非要用复杂(db2dp、snapshot)的呢?

  DB2提供的应对策略

  数据库优化是信息系统运维管理工作中,最重要也是最复杂的工作之一。由于数据库系统并不是孤立存在的一个节点,而是服务于应用数据服务的中心节点,因此数据库系统也是应用系统中最为关键的部分。

  但是,优化工作的综合性、长期性、复杂度也另人恐惧:

   数据库优化不能脱离应用,因为应用代码以及应用的数据库访问路径将决定数据库的性能最终走向;

   数据库优化不能脱离部署环境,因为服务器的运行能力和存储能力将直接影响数据库的运行性能表象;

   数据库优化是一个全生命周期工作,从应用规划开始,到应用系统的退役,其整个过程都应在不断的优化过程中进行。对于一次优化进而一劳永逸的期望,仅能是美好的愿景而已;

   数据库优化不仅仅是DBA的后期工作,而是需要全体应用参与人员的协作,这包括开发人员、DBA、甚至是项目相关的业务人员。

  站在DBA的角度,合理使用主机资源、合理使用存储配置、合理规划应用的部署,将是DBA的主要责任和优化工作方向。完整的工程手段、简便的工具环境、有效的工作成果,是DBA工作有效性的有力保证。

  作为业界的领跑者,DB2数据库系统在这方面有着积极的影响力,尤其在其数据库配置和优化上。DB2提供了接近于“一键式”的优化准备手段。

  DB2是来自于IBM的数据库管理平台,其组件DB2配置顾问程序,或者说DB2的 AUTOCONFIGURE 命令,是DB2用来“一键式”基本系统优化的工程工具。该工具可以协助DB2管理员判断并确定优化式DB2 配置。依据AUTOCONFIGURE工具的优化成果,管理员可以据此对系统运行实时性能提出的实质的改进。当然,如果DB2管理员也可以以此为DB2系统配置初始值,然后需要根据系统的特征,再对 AUTOCONFIGURE 优化建议进行附加的微调优化。

  那么AUTOCONFIGURE 如何使用呢?我们用“简单”两个字来描述这个工具最为恰当了。首先我们进入到DB2工作环境,例如下面的示例:

  db2 => connect to mydb1

  数据库连接信息

  数据库服务器 = DB2/NT 9.7.1

  SQL 授权标识 = WENPING

  本地数据库别名 = MYDB1

  下面执行autoconfigure命令,来获得一个对当前数据库系统的优化配置建议,其优化前提如下:

  #Server target memory: 510 Megabytes, 25%

  #Workload type: Transactions (order entry)

  #Average number of SQL statements per unit of work: Fewer than 10 (short transactions)

  #Number of transactions per minute (estimate): 10

  #Optimize for: Both

  #Is the database populated with data: Yes

  #Average number of connected local applications: 10

  #Average number of connected remote applications: 10

  针对上述的优化要求,我们可以在DB2环境下执行如下的DB2命令:

  db2 => autoconfigure using mem_percent 25 workload_type simple tpm 10 is_popula

  ted no num_local_apps 10 num_remote_apps 10 apply db and dbm

  其结果将如下例所示:

  db2 => autoconfigure using mem_percent 25 workload_type simple tpm 10 is_populated no num_local_app

  s 10 num_remote_apps 10 apply db and dbm

  数据库管理器配置的以前和应用的值

  描述 参数 以前值 应用的值

  -------------------------------------------------------------------------------------------------

  代理程序的堆栈大小 (AGENT_STACK_SZ) = 16 16

  应用程序支持层堆大小(4KB) (ASLHEAPSZ) = 15 15

  内部通信缓冲区数(4KB) (FCM_NUM_BUFFERS) = AUTOMATIC AUTOMATIC

  启用分区内并行性 (INTRA_PARALLEL) = NO NO

  最大查询并行度 (MAX_QUERYDEGREE) = 1 1

  代理程序池大小 (NUM_POOLAGENTS) = AUTOMATIC(100) AUTOMATIC(100)

  池中的初始代理程序数 (NUM_INITAGENTS) = 0 0

  最大请求者 I/O 块大小(以字节计) (RQRIOBLK) = 32767 32767

  排序堆阈值(4KB) (SHEAPTHRES) = 0 0

  数据库配置的以前和应用的值

  描述 参数 以前值 应用的值

  -------------------------------------------------------------------------------------------------

  缺省应用程序堆(4KB) (APPLHEAPSZ) = 256 256

  目录高速缓存大小(4KB) (CATALOGCACHE_SZ) = 414 414

  更改的页阈值 (CHNGPGS_THRESH) = 80 80

  数据库堆(4KB) (DBHEAP) = 4205 4205

  并行度 (DFT_DEGREE) = 1 1

  缺省表空间扩展数据块大小(页) (DFT_EXTENT_SZ) = 32 32

  缺省预取大小(页) (DFT_PREFETCH_SZ) = AUTOMATIC AUTOMATIC

  缺省查询优化类 (DFT_QUERYOPT) = 5 5

  锁定列表的最大存储量(4KB) (LOCKLIST) = AUTOMATIC AUTOMATIC

  日志缓冲区大小(4KB) (LOGBUFSZ) = 3010 3010

  日志文件大小(4KB) (LOGFILSIZ) = 1024 1024

  主日志文件的数目 (LOGPRIMARY) = 6 6

  辅助日志文件的数目 (LOGSECOND) = 3 3

  最大活动应用程序数 (MAXAPPLS) = AUTOMATIC AUTOMATIC

  每个应用程序的锁定百分比列表 (MAXLOCKS) = AUTOMATIC AUTOMATIC

  组落实计数 (MINCOMMIT) = 1 1

  异步页清除程序的数目 (NUM_IOCLEANERS) = 1 1

  I/O 服务器的数目 (NUM_IOSERVERS) = 3 3

  程序包高速缓存大小(4KB) (PCKCACHESZ) = AUTOMATIC AUTOMATIC

  软检查点前回收的日志文件的百分比 (SOFTMAX) = 138 138

  排序列表堆(4KB) (SORTHEAP) = AUTOMATIC AUTOMATIC

  SQL 语句堆(4KB) (STMTHEAP) = 2048 2048

  统计信息堆大小(4KB) (STAT_HEAP_SZ) = 4384 4384

  实用程序堆大小(4KB) (UTIL_HEAP_SZ) = 10192 10192

  自调整内存 (SELF_TUNING_MEM) = ON ON

  自动 runstats (AUTO_RUNSTATS) = ON ON

  缓冲池配置的以前和应用的值

  描述 参数 以前值 应用的值

  -------------------------------------------------------------------------------------------------

  IBMDEFAULTBP 缓冲池大小 = -2 10219

  MY_CACHE 缓冲池大小 = -2 2534

  MY_CACHE_4K 缓冲池大小 = -2 10219

  DB210203I AUTOCONFIGURE

  成功完成。如果选择应用更改,那么可能更改了数据库管理器或数据库配置值。必须重新启

  动实例,才能使所有此类应用的更改生效。您可能还想要在新配置参数生效之后重新绑定程

  序包,以便使用新值。

  db2 =>

  上述工具的DB2 控制中心有着很好的界面下表述。其工作环境如下图所示:


 

  使用 AUTOCONFIGURE 命令或者是“配置顾问程序”可以获得针对DB2数据库系统的优化调整建议和对应的调整命令文本,例如下面的调整脚本:

  UPDATE DATABASE CONFIGURATION FOR MYDB1 USING APPLHEAPSZ 256 AUTOMATIC;

  UPDATE DATABASE CONFIGURATION FOR MYDB1 USING CATALOGCACHE_SZ 414 ;

  。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  CONNECT TO MYDB1;

  ALTER BUFFERPOOL IBMDEFAULTBP SIZE 16070 ;

  ALTER BUFFERPOOL MY_CACHE SIZE 3985 ;

  ALTER BUFFERPOOL MY_CACHE_4K SIZE 16070 ;

  SET CURRENT QUERY OPTIMIZATION = 5;

  COMMIT;

  CONNECT RESET;

  在使用该工具时,我们最好能为该工具提供一些针对性的系统特征数据和选项,以及遵守下面的一般性使用规则。

  规则一,数据填充问题。如果数据库中数据的规模发生了本质上的变化,例如,数据量增加20%以上,这时我们需要重新运行AUTOCONFIGURE 命令。数据库数据量对AUTOCONFIGURE评估十分重要,其原因就在于数据库缓冲池大小的评估计算上。不准确的数据总量描述将导致AUTOCONFIGURE准确性下降。

  规则二,系统载荷问题。一般而言我们很难准确说清楚系统平均运行SQL的数量和频度,这是一个工程现实。对于AUTOCONFIGURE 命令而言,载荷特征是该命令的重要评估基础(关键参数),如AUTOCONFIGURE 命令的mem_percent、tpm、num_stmts等参数。这时,我们可以使用这些参数不同范围的值,用来评估对最终系统配置调整上的而影响。 再有,一些关键参数的缺省值并不适合于生产,如mem_percent参数的缺省值 25%。该参数显然过于保守,增大是必要的选择,改为50%到75%应该是可以接受的选择。

  第三,DB2的自动参数问题。DB2系统的一大好处是其自动参数的采用。对于大多数DB2系统来说这些自动参数的设置都比我们人工设置的要好,这些参数主要涉及系统的内存使用:缓冲池、锁列表、程序包高速缓存、排序堆等内存结构的大小。这些参数在DB2自动内存管理机制(STMM)下运行,一般我们无需介入管理。

  自动优化的生产意义

  我们知道的一个基本事实是,数据库系统是为用户提供数据服务的,不是用来增加技术难度,或者说“显摆”功能要素的!

  能用、简单、有结果,是用户对计算机系统的一大追求。DB2系统的这个AUTOCONFIGURE功能,看似玩具一样的一个小工具,起到的确是优化专家的作用,其四两拨千斤的特性必将受广大DBA所喜爱!
 

0
相关文章