--清单 13. 对DATABASE_MEMORY、PCKCACHESZ禁用自调整功能C:\>db2 update db cfg using DATABASE_MEMORY manualDB20000I UPDATE DATABASE CONFIGURATION命令成功完成。C:\>db2 update db cfg using PCKCACHESZ manualDB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
对缓冲池禁用自调整功能,可以通过将缓冲池的大小设成-1或固定值的方式,该缓冲池的 NPAGES 值为 -1 时,DB2 数据库配置参数 BUFFPAGE 控制着缓冲池的大小。当值为-2的时候,代表启用自调整功能(真正有效需要两个方面的因素,第一,需要self_tuning_mem参数设置为ON,第二,至少还存在一个别的内存区域,比如DATABASE_MEMORY)。具体如清单14所示:
--清单 14. 对缓冲池禁用自调整功能C:\>db2 alter bufferpool mybp1 size 100DB20000I SQL命令成功完成。C:\>db2 alter bufferpool mybp2 size 100DB20000I SQL命令成功完成。C:\>db2 alter bufferpool ibmdefaultbp size 100DB20000I SQL命令成功完成。
此时我们通过访问sysibm.sysbufferpools可以看到mybp1、mybp2和ibmdefaultbp的NPAGES字段都设置成了100了,具体如清单15所示:
-清单 15. 查看缓冲池BPNAME NPAGES---------------------------- -----------IBMDEFAULTBP100MYBP1100MYBP21003 条记录已选择。
以上,我们对自调整内存进行了详细的介绍,不过,自调整内存也存在着局限性,在少量内存可用的情况下(例如,因为 database_memory 的值设置得很小,或者因为多个数据库、实例或其他应用程序正在服务器上运行),自调整内存带来的性能好处将有限。
因为自调整内存根据数据库工作负载作出调整决定,所以内存特征不断变化的工作负载将限制自调整内存的能力以有效地进行调整。如果工作负载的内存特征不断变化,则自调整内存调整内存的频率将会降低,并且将重复调整以改变目标条件。在这种情况下,自调整内存将无法获得绝对汇合,而是尝试维护调整为当前工作负载的内存配置。