启用自调整内存功能
首先我们创建一个单一分区数据库MYDB1,由于默认情况下,单一分区数据库启用自调整内存功能,所以我们创建的示例数据库MYDB1就启动了自动自调整内存功能,其数据库参数self_tuning_mem被自动设置成了ON,并把程序包高速缓存、锁定内存、排序内存和数据库共享内存等内存使用者默认启动了自动自调整内存功能,默认创建的缓冲池IBMDEFAULTBP也启用了自调整内存功能。我们在DB2CMD窗口中,发出CREATE DB 命令,创建示例数据库MYDB1具体如清单1所示:
--清单 1. 创建启用自动自调整内存的示例数据库MYDB1C:\>DB2 CREATE DATABASE MYDB1DB20000I CREATE DATABASE命令成功完成。
我们通过GET DB CFG命令查看示例数据库MYDB1的配置参数,会发现其自调整内存参数(self_tuning_mem)被设置成了ON,数据库共享内存大小(DATABASE_MEMORY) 、 锁定列表的最大存储量参数(LOCKLIST)、 每个应用程序的锁定百分比列表参数(MAXLOCKS)、 程序包高速缓存大小参数(PCKCACHESZ)、 共享排序的排序堆域值参数(SHEAPTHRES_SHR)和 排序列表堆参数(SORTHEAP)都被设置成了AUTOMATIC,表示这些参数启用自动自调整内存,另外数据库内存阈值参数(DB_MEM_THRESH)被设置成了10。
DB2 V9中新增了数据库配置参数 db_mem_thresh,以控制有多少物理 RAM 被 database_memory 参数的未使用部分占用。此数据库配置参数指定数据库管理器如何处理未用数据库共享内存过多这一问题。通常,当进程访问内存页时,内存页处于已落实状态,这表示操作系统已分配了该内存页,并且该内存页占用物理内存空间或磁盘上的页文件空间。根据数据库的工作负载,数据库共享内存需求在一天中的某些时间可能会达到峰值。一旦操作系统有足够的已落实内存来满足那些峰值需求后,该内存就会一直处于已落实状态,即使内存需求从峰值回落亦如此。此数据库配置参数表示数据库管理器允许的已落实但当前未使用的数据库共享内存最大百分比,达到此百分比后,数据库管理器将开始释放已落实的内存页以将它们返回给操作系统。可接受的值是整数 0(立即释放任何未使用的数据库共享内存)到 100(永远不释放任何未使用的数据库共享内存)。缺省值是 10(仅当当前未使用的数据库共享内存超过 10% 时,才释放那些内存)。
具体情况如清单2所示:
--清单 2. 查看示例数据库MYDB1配置参数C:\>DB2 GET DB CFG FOR MYDB1数据库 MYDB1 的数据库配置数据库配置发行版级别 = 0x0b00数据库发行版级别 = 0x0b