缓冲池管理
缓冲池为数据库页提供工作内存和高速缓存。
缓冲池通过允许从内存(而不是磁盘)中访问数据来提高数据库系统的性能。 由于大多数页数据处理发生在缓冲池内,因此配置缓冲池是唯一的最为重要的调整环节。
当应用程序访问表行时,数据库管理器将在缓冲池中查找包含该行的页。 如果在缓冲池中找不到该页,那么数据库管理器将从磁盘中读取该页并将其放入缓冲池。 然后,可以使用该数据来处理查询。
激活数据库时,将为缓冲池分配内存。 第一个执行连接的应用程序可能以隐式方式激活数据库。 此外,还可以在数据库管理器运行期间创建和删除缓冲池以及调整缓冲池大小。 可使用 ALTER BUFFERPOOL 语句来增大缓冲池的大小。 缺省情况下,如果有足够的可用内存,那么执行此语句时将立即调整缓冲池大小。 如果执行此语句时没有足够的可用内存,那么将在重新激活数据库时分配内存。 如果减小缓冲池的大小,那么将在事务落实时释放内存。 缓冲池内存将在数据库停用时被释放。
- 指定的缓冲池由于在创建时指定了 DEFERRED 关键字而未启动,或者由于没有足够的内存可用来创建所需页大小的缓冲池而导致该缓冲池处于不活动状态
一条消息将被写入到管理通知日志。 必要时,表空间将重新映射到系统缓冲池。 性能可能明显下降。
- 在数据库连接尝试期间无法启动缓冲池
此问题通常是由于严重的原因(例如内存不足情况)所致。 虽然 DB2 将因为系统缓冲池的存在而继续充分发挥其功能,但性能将明显下降。 您应该立即解决此问题。 发生此问题时,您将接收到警告,并且系统会将一条消息写入管理通知日志。
创建缓冲池时,除非显式指定另一页大小,否则页大小将是创建数据库时指定的大小。 由于仅当表空间页大小与缓冲池页大小相同时才可以将页读入缓冲池,因此,对缓冲池指定的页大小应该由表空间的页大小确定。 在创建缓冲池后,就无法更改它的页大小。
通过发出 db2mtrk 命令调用的内存跟踪程序使您能够查看已分配给缓冲池的数据库内存量。 您还可以使用 GET SNAPSHOT 命令并检查缓冲池的当前大小(bp_cur_buffsz 监视元素的值)。
作为 DB2 工作负载管理器所提供的更大的工作负载管理功能集的组成部分,可以对活动的缓冲池优先级进行控制。 有关更多信息,请参阅 Db2 工作负载管理器概念简介
和 服务类的缓冲池优先级
。