本节书摘来自异步社区出版社《DB2性能管理与实战》一书中的第2章,第2.3节,作者: IBM中国开发中心(CDL) 信息管理软件开发部,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 STMM介绍
DB2性能管理与实战
在DB2 V9以后,引入了一种新的内存自动调优特性,叫做自调内存管理(STMM)。它通过自动设置几个内存配置参数值的方式,简化了内存配置任务。内存自动调优一旦启动,就能够在内存使用者(包括排序、程序包缓存、锁定列表和缓冲池等)之间动态分配可用内存资源。
调整器在DATABASE_MEMORY配置参数所定义的内存限制范围内工作。此参数的值也可以自动调整。启用自调整功能(将DATABASE_MEMORY的值设置为AUTOMATIC)之后,调整器将确定数据库的整体内存需求,并根据当前数据库需求来增加或减少分配给数据库共享内存的内存量。例如,如果当前数据库需求很高,并且系统上有足够的可用内存,那么将为数据库共享内存分配较多的内存。如果数据库内存需求下降,或者系统上的可用内存量变得过低,那么将释放一些数据库共享内存。
如果DATABASE_MEMORY配置参数未设置为AUTOMATIC,那么数据库将使用对此参数指定的内存量,从而根据需要在内存使用者之间分配内存。可以通过两种方法来指定此内存量:将DATABASE_MEMORY设置为某个数值将其设置为COMPUTED。在后一种情况下,总内存量基于数据库启动时的数据库内存堆初始值之和。
还可以对内存使用者启用自调整功能,如下所示。
boll 对于缓冲池,使用ALTER BUFFERPOOL或CREATE BUFFERPOOL语句(指定AUTOMATIC关键字)。
boll 对于锁定内存,使用LOCKLIST或MAXLOCKS数据库配置参数(指定AUTOMATIC值)。
boll 对于程序包高速缓存,使用PCKCACHESZ数据库配置参数(指定AUTOMATIC值)。
boll 对于排序内存,使用SHEAPTHRES_SHR或SORTHEAP数据库配置参数(指定AUTOMATIC值)。
自调整操作所作的更改将记录在stmmlog子目录的内存调整日志文件中。这些日志文件包含每个内存使用者在特定调整时间间隔内的资源需求摘要,这些时间间隔由日志条目中的时间戳记确定。
如果可用内存量不多,那么自调整功能的性能增益有限。由于调整决策基于数据库工作负载,因此内存需要快速变化的工作负载可能会限制自调整内存管理器(STMM)的效能。如果工作负载的内存特征不断变化,那么STMM将以较低的频率在多变的目标条件下进行调整。在这种情况下,STMM将无法实现绝对汇合,而是尝试维护针对当前工作负载进行调整的内存配置。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。