缓冲池
缓冲池指的是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。 每个 Db2® 数据库都必须具有缓冲池。
每个新数据库都定义了一个称为 IBMDEFAULTBP 的缺省缓冲池。 可以使用 CREATE BUFFERPOOL、DROP BUFFERPOOL 和 ALTER BUFFERPOOL 语句来创建、删除和修改缓冲池。 SYSCAT.BUFFERPOOLS 目录视图访问数据库中所定义的缓冲池的信息。
在 Db2 pureScale® 环境中,每个 成员 都有自己的本地缓冲池 (LBP)。 但是,还有一个由 集群高速缓存工具维护的附加组缓冲池 (GBP)。 GBP 由所有 成员共享。 它用作 Db2 pureScale 实例中各个 成员 所使用的页面的高速缓存,以提高性能并确保一致性。
缓冲池的使用方法
注: 以下信息讨论了除 Db2 pureScale 环境以外的环境中的缓冲池。 缓冲池在 Db2 pureScale 环境中的工作方式不同。 有关更多信息,请参阅 Db2 pureScale 环境中的缓冲池监视。
首次访问表中的数据行时,数据库管理器会将包含该数据的页放入缓冲池中。 这些页将一直保留在缓冲池中,直到关闭数据库或者其他页需要使用某一页所占用的空间为止。
缓冲池中的页可能正在使用,也可能没有使用,它们可能是脏页,也可能是干净页:
- 正在使用的页就是当前正在读取或更新的页。 为了保持数据一致性,数据库管理器只允许一次只有一个代理程序更新缓冲池中的给定页。 如果正在更新某页,那么它正在内一个代理程序互斥地访问。 如果正在读取该页,那么多个代理程序可以同时读取该页。
- “脏”页包含已更改但尚未写入磁盘的数据。
- 将一个已更改的页写入磁盘之后,它就是一个“干净”页,并且可能仍然保留在缓冲池中。
大多数情况下,调整数据库涉及到设置用于控制将数据移入缓冲池以及等待将数据从缓冲区写入磁盘的配置参数。 如果最近的代理程序不需要页空间,那么可以将页空间用于新应用程序中的新页请求。 额外的磁盘 I/O 会使数据库管理器性能下降。