使用 BUFFERPOOL 配置参数来配置在共享内存中高速缓存的数据页数,在检查点之间以何种频率将那些页清空到磁盘。对于许多系统而言,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 default,buffers=10000,lrus=8,lru_min_dirty=50.00, lru_max_dirty=60.50 BUFFERPOOL size=4k,buffers=10000,lrus=8,lru_min_dirty=50, lru_max_dirty=60
BUFFERPOOL default,memory='auto' BUFFERPOOL size=page_size,memory=memory_sizepage_size 值是缺省页大小。缓冲池的最初大小是 32 MB。作为 auto 或 memory_size 值,指定 memory 域的值作为大小的最大值,这依赖于 AUTO_TUNE_SERVER_SIZE 配置参数的值。
高速缓存数据页保存在缓冲区中。缓冲区包含在缓冲池中。用作存储空间的每个页大小需要一个缓冲池。当数据库服务器需要将新数据页移入共享内存时,最近最少使用的数据页移出内存。 BUFFERPOOL 配置参数控制缓冲池的大小和数据页清空到磁盘的频率。
如果您在安装期间创建了一个服务器,则在 onconfig.std 文件或 onconfig 文件中,BUFFERPOOL 配置参数有两个条目:
包括 size 域的 BUFFERPOOL 配置参数条目优先于包含 default 域的条目。
BUFFERPOOL 配置参数有两种格式:
您可使用其中一种格式来在需要提高性能时使得数据库服务器能扩充缓冲池的大小。
ERROR: Cannot mix buffer arguments with memory arguments. (BUFFERPOOL)
BUFFERPOOL 条目中的域不是大小写敏感的,且这些域会按任何顺序罗列。
域 | 值 |
---|---|
buffers | 缺省是 1000。
number_buffers 值是一个大于等于 1000 的整数,指定共享内存缓冲区的最大数目。允许的缓冲区最大数目依赖于操作系统,位大小和页大小:
每个用户 buffers 域的值设置为最少四个缓冲区。如果您的系统要处理超过 500 个并发用户,则至少指定 2000 个缓冲区。 每个缓冲区是操作系统页的大小。因此,数据库服务器需要的缓冲区数目依赖于物理内存的数量以及应用程序使用多少内存。例如,如果 90% 的时间数据库服务器访问 15% 的应用程序数据,则分配保持 15% 数据的充足缓冲区。提高缓冲区数目可提高系统性能。缓冲区数目可显著影响性能并使用大百分比的物理内存。 要了解更多信息,请参阅 BUFFERPOOL 配置参数与内存利用。 |
cache_hit_ratio | 缺省是 90。
ratio 值是一个 0 - 100 的整数,表示缓冲池可以在之下扩展的阈值。当平均读高速缓存命中率保持在 ratio 之下大约五分钟时,数据库服务器扩展缓冲池。 只有设置 extendable=1时,cache_hit_ratio 域才有效。 |
extendable | 如果设置 memory 域,则缺省是 1。
如果设置 buffers 域,则缺省是 0。 数据库服务器能否扩展缓冲池的大小:
|
lru_max_dirty | 缺省是 60.00。
max_percentage 是一个 0 - 100.00 的十进制数,设置在 LRU 队列中当被修改页达到多少百分比时清除队列。 如果启用 AUTO_LRU_TUNING 配置参数,则这个值根据需要动态地更新。 |
lru_min_dirty | 缺省是 50.00。
min_percentage 值是一个 0 - 100.00 的十进制数,设置在 LRU 队列中当被修改的页达到多少百分比时不再强制清除页。 在有些环境下,页清除程序可以在超过特定百分比时继续清除。 如果启用 AUTO_LRU_TUNING 环境变量,则这个值根据需要自动地更新。 |
lrus |
缺省是 8。如果启用 MULTIPROCESSOR 配置参数,则缺省大于 8 或 CPU VP
的数目。
number_lrus 值是一个正整数,指定缓冲池中 LRU(最近最少使用)队列的数目。 取值范围依赖于操作系统的位大小:
指定 LRU 队列越多,就有越多页清除程序并行工作。然而,设置 lrus 域的值过高,可能导致过度的页清除程序活动。 lrus 域的值与 lru_min_dirty 和 lru_max_dirty 域组合在一起,控制共享内存缓冲区清空到磁盘的频率。 要了解更多信息,请参阅 BUFFERPOOL 及其对页清除的影响。 |
max_extend | 缺省是 8。
extends 表示数据库服务器可扩展缓冲池的最大次数。extends 的值时从 0 到段的最大数目,依赖于操作系统和位大小:
只有设置 buffers 和 extendable=1,max_extend 域才有效。 |
memory | 缺省是 auto。
max_size 表示缓冲池大小的最大值。max_size 取值范围是:
|
next_extend | 缺省是 1000。
number_buffers 值是一个大于等于 1000 的整数,指定数据库服务器用于扩展缓冲池的共享内存缓冲区数目。number_buffers 的最大值受虚拟共享内存数量的限制。 每四次扩展,number_buffers 值翻倍。 只有设置 buffers 和 extendable=1,next_extend 域才有效。 |
size | page_size 值指定缓冲区的页大小,以 KB 为单位。页大小必须是 2 - 16
KB 且必须是缺省页大小的倍数。例如,如果缺省页大小是 2 KB,则页大小可是 2、4、6、8、10、12、14 或 16。如果缺省页大小是 4 KB,则页大小可是
4、8、12 或 16。缺省值依赖于系统缺省页大小:
k 是可选的。 |
start_memory | 缺省是 32 MB。
start_size 值表示当数据库服务器启动时缓冲池的初始大小:
如果您不设置 start_memory 域,则缓冲池的初始大小等于 memory 域的值。 只有设置 memory 域,start_memory 域才有效。 |
如果您使用内存格式,则缺省状态下,缓冲池大小根据需要增长。当平均高速缓存读命中率低于阈值时,共享内存段添加到缓冲池。您可设置缓冲池的初始大小和大小的最大值,或允许数据库服务器最优的大小。
如果 extendable 域设置为零,则缓冲池不增长。如果设置,则大小等于 start_memory 域的值,否则,等于 memory 域的值。
当您重启服务器时,缓冲池的大小重置为 start_memory 域的值。
如果您使用 buffers 格式,则缺省情况下,缓冲池大小不增长。大小等于 buffers 域的值。
如果您设置 extendable 域为 1,则当平均高速缓存读命中率低于阈值时,共享内存段添加到缓冲池。您必须在 buffers 域中设置缓冲区的初始数目。您可选择通过设置缓冲区的数目来扩展缓冲池,以及缓冲池可扩展的最大次数,以及高速缓存命中率。每四次扩展,添加到缓冲池的缓冲区数目翻倍。
下列条目创建一个有 10 KB 页大小的缓冲池:
BUFFERPOOL size=10k,start_memory=auto,memory=4gb
缓冲池可扩展到 4 GB。数据库服务器决定缓冲池的初始大小和扩展到缓冲池的大小。
下列条目创建一个有 2 KB 页大小的缓冲池:
BUFFERPOOL size=2k,extendable=1,buffers=1000,next_buffers=2000,max_extends=8
缓冲池可扩展八次。缓冲池启动时有 1000 个缓冲区。最初三个缓冲池扩展添加 2000 个缓冲区。第四次到第七次扩展添加 4000 个缓冲区。第八次扩展添加 8000 个缓冲区。
当您用 onspaces 实用程序添加一个带有不同页大小的 dbspace 时,或者当您用 onparams 实用程序添加一个缓冲池时,在 onconfig 文件中添加一个 BUFFERPOOL 配置参数条目。下列示例显示一个第三条目:
BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50 BUFFERPOOL size=2k,buffers=10000,lrus=8,lru_min_dirty=50,lru_max_dirty=60 BUFFERPOOL size=6k
当您创建一个非缺省页大小的 dbspace 时,如果现有的 BUFFERPOOL 条目存在,则数据库服务器使用那个条目的页大小。否则,数据库服务器使用来自 BUFFERPOOL 缺省行的值。