【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