为非缺省页大小创建缓冲池

创建缓冲池时,可使用 BUFFERPOOL 配置参数或 onparams 实用程序来指定有关缓冲区的信息(包括其大小)、指定缓冲池中 LRUS 的数量、指定缓冲池中缓冲区的数量,以及的 lru_min_dirtylru_max_dirty 值。

使用 BUFFERPOOL 配置参数指定此信息。

BUFFERPOOL 配置参数由 onconfig.std 文件中的两行组成。

在 UNIX™ 系统上,这些行是:
BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50
BUFFERPOOL size=2K,buffers=50000,lrus=8,lru_min_dirty=50,lru_max_dirty=60

第一行指定了使用的缺省值,这些值是当您创建的数据库空间的页大小没有对应在启动数据库服务器时创建的缓冲池时被使用的。缺省行之后的以下行指定了缓冲池的数据库服务器缺省值。 这些值以数据库服务器的缺省页大小为依据。

使用 onspaces 实用程序添加具有不同页大小的数据库空间时,或者使用 onparams 实用程序添加新的缓冲池时,将向 onconfig 文件的 BUFFERPOOL 配置参数添加一个新行。每个缓冲池的页大小必须为您操作系统缺省页大小的倍数。以下示例显示了添加到 onconfig 文件中的第三个 BUFFERPOOL 行:
BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50
BUFFERPOOL size=2K,buffers=50000,lrus=8,lru_min_dirty=50,lru_max_dirty=60
BUFFERPOOL size=6K,buffers=3000,lrus=8,lru_min_dirty=50,lru_max_dirty=60

BUFFERPOOL 行中的字段不区分大小写,所以您可以指定 lrusLrusLRUS)。 这些字段可按任何顺序显示。

如果没有为新的缓冲池指定页大小,那么 GBase 8s 会将操作系统缺省页大小用作缓冲池的缺省页大小。

如果 buffers 的值为零 (0),或者在 BUFFERPOOL 配置参数中缺少 buffers 的值,那么 GBase 8s 不会创建指定页大小的缓冲池。
重要: 使用 BUFFERPOOL 配置参数输入的信息将取代先前使用不推荐的参数指定的任何信息。有关不推荐的参数的更多信息,请参阅附录,其中包含 GBase 8s 管理员参考 中已终止的配置参数的信息。
下表为您使用 BUFFERPOOL 配置参数或 onparams 实用程序指定的值提供了说明。
字段 解释 值范围
size 指定页面中后跟后缀 K 的 KB 数。 大小可在 2K 或 4K 至 16 K 之间变化。2K 为缺省值。
buffers 指定页大小缓冲区的数量。

这是数据库服务器用户线程代表客户机应用程序用于磁盘 I/O 的共享内存缓冲区的最大数目。数据库服务器所需的缓冲区数取决于应用程序。

例如,如果数据库服务器用了 90% 的时间访问了 15% 的应用程序数据,那么必须分配足够的缓冲区以保留该 15% 的数据。增加缓冲区数量可提高系统性能。

缓冲区空间所需的物理内存百分比取决于计算机上可用的内存量,以及用于其他应用程序的内存量。对于具有大量可用物理内存(4 千兆字节或以上)的系统,缓冲区空间可达到物理内存的 90%。对于可用物理内存量较小的系统,缓冲区空间的范围可以为物理内存的 20% 到 25%。

必须在设置缓冲区空间 (buffers *system_page_size) 后计算所有其他的共享内存参数。

对于 UNIX 上的 32 位平台
  • 页大小等于 2048 字节:100 到 1,843,200 个缓冲区 (1843200 = 1800 * 1024)
  • 页大小等于 4096 字节:100 到 921,600 个缓冲区 (921,600 = ((1800 * 1024)/4096) * 2048 )

对于 64 位平台:100 到 231-1 个缓冲区(对于 64 位平台的实际值,请参阅发行说明。Solaris 上缓冲区的最 大数为 536,870,912。)

lrus 在共享内存缓冲池中为页大小指定 LRU(最近最少使用的)队列的数目。可调整 LRUS、lru_min_dirtylru_max_dirty 值以控制共享内存缓冲区每隔多少时间清空到磁盘一次。

将 LRUS 设置得过高可能导致页清除程序活动过多。

1128
lru_min_dirty 指定已修改的页占 LRU 队列的百分比,达到该百分比时页清除将不再是必需的。在某些情况下,页清除程序可能会超出该点继续清除。

用于清空检查点之间缓冲池的 LRU 值对于检查点性能不是特别重要。 lru_min_dirty 值通常仅对于维持足够数量的干净页以供替换而言是必要的。通过设置 LRU 清空参数以将 lru_min_dirty 设置为 70 来启动。

有关更多信息,请参阅用于清空检查点之间缓冲池的 LRU 值

0100(允许小数值)

如果超过值的范围指定参数,那么缺省值将被设置为 50.00%。

lru_max_dirty 指定已修改页占 LRU 队列的百分比,达到该百分比时将清除队列。

用于清空检查点之间缓冲池的 LRU 值对于检查点性能不是特别重要。 lru_max_dirty 值通常仅在维持足够数量的干净页以供替换时才显得必要。通过设置 LRU 清空参数以将 lru_max_dirty 设置为 80 来启动。

有关更多信息,请参阅用于清空检查点之间缓冲池的 LRU 值

0100(允许小数值)

如果超过值的范围指定参数,那么缺省值将被设置为 60.00%。

如果数据库服务器处于联机、静默或管理方式,那么您还可以使用 onparams 实用程序添加不同大小的新缓冲池。使用 onparams 实用程序时,指定的信息将自动传输到 onconfig 文件的,并且会使用 BUFFERPOOL 关键字指定新值。不能通过编辑 onconfig.std 文件更改值。

当您使用 onparams 实用程序时,请如下指定信息:
onparams -b -g <size of buffer page in Kbytes> -n <number of buffers> 
-r <number of LRUs> -x <max dirty (fractional value allowed)> 
-m <minimum dirty (fractional value allowed)>
例如:
onparams -b -g 6 -n 3000 -r 2 -x 2.0 -m 1.0

这添加了 3000 个大小为 6K 字节的缓冲区,每个缓冲区都具体 2 个 LRUS 并且 lru_max_dirty 被设置为 2%,而且 lru_min_dirty 被设置为 1%。

有关 onparams 实用程序的更多信息,请参阅 GBase 8s 管理员参考

建议: 将 PHYSBUFF 配置参数至少设置为 128 KB。如果数据库服务器已配置为使用 RTO_SERVER_RESTART,请将 PHYSBUFF 配置参数至少设置为 512 KB。将 PHYSBUFF 设置为较低的值可能会影响事务性能以及/或者导致服务器初始化期间出现性能警告。

LG_ADDBPOOL 日志记录和 sysbufpool 系统目录表包含有关每个缓冲池的信息。

当数据库服务器正在运行时添加的缓冲池将会进入虚拟内存而不是常驻内存中。根据正在使用的内存的可用性,仅在启动时在 onconfig 文件中指定的那些缓冲池条目会进入常驻内存。