【IT168 技术文档】简介
IBM 的 DB2 V9 引入了自动维护功能,即自动数据库备份、自动统计信息更新以及在必要时重组表和索引。对于用户来说,确定是否以及何时运行维护活动可能相当费时。自动维护功能解除了用户的负担。借助自动维护功能,可以指定维护目标(包括自动维护功能的运行时间)。DB2 使用您指定的目标来确定是否需要执行维护活动,在下一个可用的维护窗口(自动维护活动的运行时间段,由用户定义),将仅运行必需的维护活动。
以往我们备份数据库有三种方式,第一种是用 DB2 调度中心把备份作为一个任务进行调度,第二种是把备份命令写到一个 Shell 脚本中,放到 UNIX 的 CRONTAB 中进行调度自动运行,第三种是基于第三方软件进行管理,比如用 Tivoli Storage Management(TSM)进行备份管理。现在 DB2 V9 推出了自动备份功能,自动数据库备份功能为用户提供了一个解决方案,从而帮助用户确保定期正确地对他们的数据库进行备份,而不必担心何时进行备份,也不需要具有有关备份命令的任何知识。以往一般都是 DBA 根据实际情况,比如建议对一个频繁进行大量更新、插入或者删除操作的表进行 RUNSTATS,建议在重组表之后运行 RUNSTATS。现在 DB2 V9 推出了数据访问优化(运行统计),DB2 将更新有关表数据、表索引数据或者表数据及其索引数据的系统目录统计信息。优化器使用这些统计信息来确定用来访问数据的路径。自动收集统计信息功能通过维护最新的表统计信息来尝试提高数据库的性能。目标是允许优化器根据准确的统计信息来选择访问方案。另外,DB2 V9 还提供了数据碎片整理(表或索引重组)和统计信息概要分析等功能,。数据碎片整理(表或索引重组)可以提高 DB2 数据库管理器访问表的效率。自动重组功能管理脱机进行的表和索引重组,用户不必担心何时以及如何重组他们的数据。自动统计信息概要分析功能通过检测过时的、丢失的以及不正确指定的统计信息以及通过根据查询反馈信息来生成统计信息概要文件的方法来建议何时以及如何收集表统计信息。
自动维护功能部件的启用是通过使用自动维护数据库配置参数来控制的。具有一组分层的开关用来方便灵活地管理这些功能部件的启用。可以使用“配置自动维护”向导使数据库维护活动仅在需要时才自动运行。DB2 数据库管理器使用已使用“配置自动维护”向导指定的目标来确定是否需要执行维护活动。然后,在下一个可用的维护窗口中,DB2 仅运行必需的维护活动。维护窗口是您定义的自动维护活动的运行时间段。
由于自动维护是 DB2 V9 的新特性,很多客户不知道该如何使用,本文重点介绍 DB2 V9 关于自动维护方面的新特性,并结合实际的例子帮助大家理解和提高。
我们将按照下列顺序介绍自动自调整内存:
- 创建数据库期间缺省启用的自动收集统计信息功能
- 启用自动备份功能
- 启用自动表和索引重组
以往,在 DB2 V9 之前的版本,由于没有自动维护功能,所以都是建议对一个频繁进行大量更新、插入或者删除操作的表进行 RUNSTATS,建议在重组表之后运行 RUNSTATS。我们都是通过手工执行 RUNSTATS 命令,或者通过 DB2 任务中心调度执行 RUNSTATS 命令来收集表的统计信息以改善数据库性能。现在 DB2 V9 又新增了自动收集统计信息功能, 自动收集统计信息通过收集最新的表统计信息来改善数据库性能。DB2 确定工作负载需要哪些统计信息以及需要更新哪些统计信息。然后,在后台自动调用 RUNSTATS 实用程序以确保收集并维护正确的统计信息。将首先收集有关最需要的表的统计信息。然后,DB2 优化器根据准确的统计信息来选择访问方案。在创建数据库之后,可以通过将数据库配置参数 AUTO_RUNSTATS 设置为 OFF 来禁用自动收集统计信息。
从 IBM DB2 版本 9.1 开始,在创建新的数据库时,缺省情况下会启用自动收集统计信息(RUNSTATS)功能。这表示DB2数据库管理器将确定是否需要更新数据库统计信息。然后,RUNSTATS 实用程序会根据需要在后台自动运行,以确保最新的数据库统计信息可用。需要注意的是,将数据库从版本 8 迁移到版本 9.1 时,不会自动启用此功能。要在已迁移的数据库中使用此功能,必须手工进行启用。
接下来我们创建测试数据库 DB2TEST1,打开 DB2CLP 命令窗口,发出 CREATE DATABASE 命令语句,创建数据库,具体如清单 1所示:
清单 1 .创建示例数据库 DB2TEST1
C:\> DB2 CREATE DATABASE DB2TEST1 DB20000I CREATE DATABASE命令成功完成。 |
这样我们创建了一个测试数据库 DB2TEST1,其自动维护功能(AUTO_MAINT 数据库参数)已经打开了,只有自动维护功能打开,自动数据库备份和自动表维护功能才有效;默认情况下自动数据库备份(也就是 AUTO_DB_BACKUP 数据库参数默认被设置成了 OFF)功能是关闭的,如果想打开,需要更改 AUTO_DB_BACKUP 数据库参数,把其设置成 ON;自动表维护默认情况已经打开,只有自动表维护(也就是 AUTO_TBL_MAINT 被设置成 ON)打开,其所属的自动 RUNSTATS、自动统计信息概要分析和自动重组才有效,默认情况下自动 RUNSTATS 是打开的,自动统计信息概要分析和自动重组是关闭的。我们查看示例数据库 DB2TEST1 的配置参数,可以看到数据库地域是中国( CN),数据库代码页是 1386,数据库代码集是 GBK,自动维护默认打开,自动表维护默认打开,自动 RUNSTATS 默认打开,具体如清单 2 所示。
清单 2 .查看示例数据库 DB2TEST1 参数
C:\> db2 get db cfg for db2test1 数据库 db2test1 的数据库配置 数据库配置发行版级别 = 0x0b00 数据库发行版级别 = 0x0b00 数据库地域 = CN 数据库代码页 = 1386 数据库代码集 = GBK 数据库国家/地区代码 = 86 数据库整理顺序 = UNIQUE 备用整理顺序 ( ALT_COLLATE ) = 数据库页大小 = 4096 . . . . . . . . . . . . . . . . . . . . . . 自动维护 ( AUTO_MAINT ) = ON 自动数据库备份 ( AUTO_DB_BACKUP ) = OFF 自动表维护 ( AUTO_TBL_MAINT ) = ON 自动 runstats ( AUTO_RUNSTATS ) = ON 自动统计信息概要分析 ( AUTO_STATS_PROF ) = OFF 自动概要文件更新 ( AUTO_PROF_UPD ) = OFF 自动重组 ( AUTO_REORG ) = OFF |
我们可以 DB2 控制中心对自动维护进行配置。打开 DB2 控制中心,在左边树形列表上找到 DB2TEST1 数据库,点右键,选“配置自动维护”,就打开了自动维护窗口。在自动维护配置窗口,可以将低活动量和没有活动的时间段定义为此数据库的维护窗口;可以选择要自动处理的DB2维护活动,除了默认启动的自动RUNSTATS,还可以设置自动数据库备份(需要把 AUTO_DB_BACKUP 数据库参数设置成 ON )、自动统计信息概要分析(需要把 AUTO_STATS_PROF 数据库参数设置成 ON)、自动概要文件更新 (需要把 AOTO_PROF_UPD 数据库参数设置成 ON )以及自动重组(需要把AUTO_REORG设置成ON);可以选择在自动维护不成功时要通知的人员。DB2 将通过使用评估条件,确定是否需要维护,需要维护是必需的,将在下一个可用维护窗口中完成维护。具体如图 1 所示:
我们点下一步,打开选择自动维护类型页面,在这个页面中可以看到当前的自动维护设置是什么;还可以设置数据库的自动维护,比如可以更改自动设置或者禁用自动维护功能,具体如图2所示:
我们选择更改自动设置,点下一步,进入到“指定何时可以运行自动维护活动”页面,在这里,可以指定自动维护活动是联机方式运行还是脱机方式运行,具体如图3所示:
联机维护活动是可以在用户已连接到数据库的情况下运行的维护活动。运行联机维护活动时,允许任何当前已连接的应用程序保持连接,并允许建立新连接。
脱机维护活动是只有一定程度地中断用户对数据库的访问才能运行的维护活动。影响用户访问的程度取决于所运行的维护活动。在脱机备份期间,没有任何应用程序可以与数据库连接。任何当前已连接的应用程序都将被强制断开连接。 在脱机数据碎片整理(表或索引重组)期间,应用程序可以访问数据库表中的数据,但无法进行更新。
需要注意的是,数据访问优化维护活动(运行统计)只能以联机方式执行。
维护窗口是自动维护活动的运行时间段,由用户定义。这与任务时间表不同。在维护窗口内,不必运行每项自动维护活动。而是,DB2?根据所要运行的每项维护活动的需求来对系统进行评估。如果未符合维护需求,就运行该维护活动。如果数据库的维护状态良好,则不运行维护活动。
您可能需要确定运行自动维护活动的时间。运行自动维护活动(备份、统计信息收集、统计信息概要分析和重组)将消耗系统上的资源,并且可能会影响数据库的性能。当自动重组和脱机数据库备份运行时,这些实用程序还会限制对表和数据库的访问。因此,需要提供适当的时间段,以便可以在内部安排由 DB2 数据库管理器运行。可以使用“控制中心”或“运行状况中心”中的“自动维护”向导来将这些时间段指定为脱机和联机维护时间段。
脱机数据库备份以及表和索引重组是在脱机维护时间段内运行的。即使超过了指定的时间段,这些功能部件也将运行直到完成为止。内部调度机制经过一段时间就会了解并估计作业完成时间。如果对于特定数据库备份或重组活动来说脱机时间段太短了,则调度程序下一次将不启动作业,并依赖运行状况监视器来提供需要延长脱机维护时间段的通知。
自动统计信息收集和概要分析、联机索引重新组织以及联机数据库备份都在联机维护时间段内运行。为了使它们对系统的影响最小,将用适当的实用程序调节机制来调节联机数据库备份以及自动统计信息收集和概要分析。内部调度机制使用联机维护时间段来启动联机作业。即使超过了指定的时间段,这些功能部件也将运行直到完成为止。
联机维护窗口如图4所示:
图 4. 具体联机维护窗口
脱机维护窗口如图 5 所示: