在任何DB2调整之前,都必须对可发现问题的性能信息做一个总览。DB2子系统有一些工具来获取信息并且产生DB2的跟踪记录,它被写到SMF或者GTF目标文件中。一般使用的性能相关信息记录的目标文件是SMF。DB2创建三种常见的SMF记录标识符:100,101和102。DB2给这些记录类型分配多个级别。这些级别被定义在DSNZPARM或者在START TRACE命令里,并且告诉DB2来统计哪个级别的数据。
SMF记录
SMF 100记录被称为统计记录,包含DB2系统范围内的信息。和这些统计记录相关的是四个级别。因为这些统计记录的负载非常小,一般来说统计级别都设置为1,3,4和5。这些级别包含以下信息:
SMF 101记录被称为记账记录,包含了单个DB2线程相关的信息,用来初始化任何性能调整
SMF 102记录被称为性能记录,包含了详细的性能相关信息。这些记录为每次详细的问题发现而收集。注意,一些性能跟踪会影响DB2的性能。
其它性能数据
其他重要的调整信息来源是DB2 EXPLAIN输出。这个信息描述了DB2用来获取结果集的方法。在绑定多个计划和包的时候保持EXPLAIN的运行是非常重要的。同样,保留EXPLAIN输出的历史数据也是非常重要的。历史数据是决定是否一个性能问题和数据获取方法的变化相关。
最后一个DB2性能相关的基本信息来源就是RMF数据。RMF信息可以在问题是CPU资源或者DASD
隔离和发现性能问题
当DB2应用程序性能发生问题了,你该怎么办?首先要明确的事情是问题是客观存在了。可以通过以下现象认识到:
隔离原因
当问题被认识到时,80/20法则就应该被用来查明代表主要工作负载的那一小部分DB2会话。这些会话如果能被调整将会带来很大的性能提升。在这个阶段中要问问这样一些问题如:这个问题是和单个的会话,任务或用户相关,还是这个问题隔一段时间就会发生?给出这些问题的答案,它们会减少“可疑”的会话列表到可以接受的数量。
DB2PM短记账报告
在性能调整工程的问题查明阶段,正常的开始点是去审查以下DB2PM短记账报告。这个报告提供了使用的资源的情况。它将指明:
这些域标明了可能潜在的问题。使用短记账报告有一个警告:这个报告是报告间隔里一个计划或者包的所有执行的平均。平均能够影响一些非常长的计划或包的执行情况,如果1)在这个阶段有多个计划或者包的执行2)大多是非常短时间的执行。再次说明,找到在报告间隔里看起来使用资源最多的计划或包。
详细性能分析
当“有问题的”计划或包被查出之后,就是到了仔细审查相关信息的时间了。首先是检查EXPLAIN输出。运行一个独立的EXPLAIN来决定当前DB2使用的访问路径。然后比较这个信息和EXPLAIN输出(PLAN_TABLE中积累的),因为它是和运行这个计划或包的最后一次绑定相关的。如果DB2使用的访问路径和你认为的不一样,检查DB2 Catalog中丢失的信息或者SQL调用中的变化等。
DB2PM长记账报告
如果DB2的访问路径不能揭示解决办法,检查DB2PM长记账报告。这个报告展示了计划或者包的执行的详细信息。下面就是一些此报告的关键部分信息:
a. 第一个SQL语句执行前的时间
b. DB2创建线程时间
c. DB2终止线程之后的时间
这会帮助标识是否问题和DB2相关或者“外部”原因。
a. 访问路径的变化
b. 程序代码的变化
c. 系统范围内DB2缓冲池的问题
d. RID池失败
e. 系统范围内EDM池问题
如果I/O时间比预期的高,检查I/O竞争。一个同步读应该占去15-25毫秒,根据DASD
有很多地方来查找,也有很多原因来导致DB2性能问题。这篇文章只是一个开始。你将发现你越了解DB2函数的运行机理,性能调节就会变得越容易。