DB2数据库日常维护是确保数据库性能和稳定运行的关键环节。本文将详细介绍如何制定和执行DB2数据库的日常维护规范,重点包括运行runstats和reorg这两个重要的数据库维护活动。
DB2优化器依赖于表和索引的统计信息来选择查询的最优访问路径。统计信息如果过时或不准确,将导致优化器无法作出最佳决策,从而降低查询性能。DB2优化器为了提高执行查询的速度,需要定期收集和更新这些统计信息。在DB2 V9之前,这通常需要数据库管理员(DBA)手动执行runstats命令或者通过DB2任务中心调度执行来更新统计信息。这种方法既耗时又容易出错,因为决定为特定工作负载收集哪些统计信息是一项复杂的工作。
DB2 V9引入了自动收集统计信息的新功能,大大简化了这一维护任务。在自动收集统计信息功能开启的情况下,DB2会自动识别需要收集的统计信息,并在后台调用runstats实用程序来收集和更新这些信息。这样可以确保DB2优化器始终使用最新、最准确的统计信息来制定访问方案。
自动收集统计信息默认从DB2版本9.1开始启用,但仅限于新创建的数据库。对于已存在的数据库,如果之前运行的是DB2版本8,升级到版本9.1后,自动收集统计信息功能不会自动开启,需要手动进行配置。如果需要禁用自动收集统计信息,可以通过修改数据库配置参数AUTO_RUNSTATS为OFF来实现。
在未启用自动收集统计信息的情况下,数据库管理员需要使用runstats命令手动更新统计信息。runstats命令的使用方法简单,例如,对特定表(如TEST)和所有索引运行统计信息更新,可以使用命令:
```
db2 runstats on table schema.test and index all
```
该命令执行后,DB2将返回成功完成的消息。
如果数据库中存在索引,并且管理员希望收集索引的统计信息以便优化器评估是否应该使用索引来解析查询,则需要具备一定权限。具体来说,必须连接到包含表和索引的数据库,并拥有sysadm、sysctrl、sysmaint或dbadm权限之一。
收集索引统计信息时,可以使用带SAMPLE或DETAILED选项的runstats命令。例如,创建索引PK_PROJECT和XPROJ2的详细统计信息可以使用以下命令:
```
db2 runstats on table schema.project and detailed indexes all
```
如果资源和时间有限,但又需要收集索引的统计信息,可以使用采样(SAMPLE)方式,而非对每个索引条目执行详细计算。
除了运行runstats以外,DB2日常维护还包括重组(reorg)表的活动。随着数据量的增长,表的物理结构可能会变得碎片化,导致数据库性能下降。通过reorg命令可以整理数据并优化表的存储结构,以提高查询效率。定期执行reorg可以避免数据碎片化问题,从而维持数据库性能。
DB2数据库管理员应该根据数据库的使用情况,制定包括runstats和reorg在内的日常维护计划,并根据实际情况调整维护策略。通过这种方式,管理员可以确保数据库稳定运行,同时避免因忽略维护而导致的性能问题。