sp_poolconfig <cache_name>[, "<mem_size> [P | K | M | G]", "<config_pool>K"
[, "<affected_pool> K"], instance <instance_name>]
sp_poolconfig <cache_name>, "<affected_poolK>", "wash=<size>[P|K|M|G]"
sp_poolconfig <cache_name>, "<affected_poolK>",
"local async prefetch limit=<percent> "
<cache_name>
是现有数据高速缓存的名称。
<mem_size>
是将要创建的内存池的大小或具有指定 I/O 大小的现有池的新总大小。池的最小大小为 256 个逻辑服务器页。对于逻辑页大小为 2 K 的服务器,最小大小为 256 K。指定大小的单位,用 P 表示页,用 K 表示千字节,用 M 表示兆字节,用 G 表示千兆字节。缺省单位为千字节。
<config_pool>
是内存池中(在其中内存将被分配或删除)执行的 I/O 大小。
有效 I/O 大小是逻辑页大小的倍数,最大是该大小的 4 倍。
<affected_pool>
是要释放内存的或要修改池属性(如 'wash size' 和 'prefetch limit')的内存池中执行的 I/O 大小。如果未指定 <affected_pool>,则内存取自最低逻辑页大小的内存池。
<instance_name>
(Cluster Edition) 要调整缓冲池的实例的名称。
wash=<size>
更改内存池的清洗大小(高速缓存中 SAP ASE 服务器将脏页写入磁盘的位置)。
local async prefetch limit=<percent>
设置可用于保存已由异步预取读入高速缓存、但尚未使用的缓冲区的池中缓冲区所占的百分比。有效值为 0 到 100。如将预取限制设置为 0,将禁用池中的异步预取操作。
在具有 10 MB 空间的 pub_cache 数据高速缓存中创建 16K 池。所有空间都取自缺省的 2K 内存池:
sp_poolconfig pub_cache, "10M", "16K"
从 pub_cache 的 64K 池中为 32K 池创建 16 MB 的空间:
sp_poolconfig pub_cache, "16M", "32K", "64K"
报告 pub_cache 的当前配置:
sp_poolconfig "pub_cache"
从 pub_cache 中删除 16K 内存池,将分配给它的所有内存都放置于 2K 池中:
sp_poolconfig pub_cache, "0K", "16K"
将 pubs_cache 中 2K 池的清洗大小更改为 508K:
sp_poolconfig pub_cache, "2K", "wash=508K"
将 2K 池的异步预取限制更改为 15%:
sp_poolconfig pub_cache, "2K", "local async prefetch limit=15"
(集群环境)在实例 blade1 上的缺省数据高速缓存内创建大小为 25 MB 的 16KB 缓冲池:
sp_poolconfig 'default data cache', '25M', '16K', 'instance blade1'
(集群环境)显示实例 blade1 上的缺省数据高速缓存中的缓冲池配置:
sp_poolconfig 'default data cache', 'instance blade1'
(集群环境)显示集群中所有实例上命名高速缓存 c_log 的缓冲池配置:
sp_poolconfig c_log
- 缺省数据高速缓存包含一个 2 K 的缓冲池和一个 16 K 的缓冲池
- 用户高速缓存包含一个 2 K 的缓冲池和一个 16 K 的缓冲池
- 日志高速缓存包含一个 2 K 的缓冲池和一个 4 K 的缓冲池

此图显示带有缺省高速缓存和用户定义的高速缓存的数据高速缓存。
- 如果您尝试通过将池的大小设置为零来删除该池,并且其中某些页正在使用中,则 sp_poolconfig 将尽可能多的减少池大小,并显示警告消息。池的状态将被设置为“Unavailable/deleted”。
- 如果您尝试移动缓冲区以创建新池,并且无法将足够的缓冲区移入这个新池中,则 sp_poolconfig 将移动尽可能多的缓冲区,并且高速缓存状态被设置为“Unavailable/too small”。
清洗大小的缺省值因池大小不同而不同。
| 池大小 | 缺省清洗大小 |
|---|---|
| 小于 300 MB | 缺省清洗大小设置为池中缓冲区的 20%。 |
| 大于 300 MB | 缺省清洗大小是 300 MB 中缓冲区数量的 20%。 |
清洗大小的最小设置为 10 个缓冲区,最大设置为池大小的 80%。
每个内存池都在该池中缓冲区链的最近使用最少的(LRU)端包含一个清洗区。一旦脏页(在处于高速缓存中时已被更改的页)移入该清洗区后,SAP ASE 服务器就将启动对这些页的异步写入。清洗区必须足够大,以便页可在到达池的 LRU 端之前写入磁盘。在 SAP ASE 服务器需要等待干净缓冲区时,性能会受到影响。
缺省百分比(在清洗区中放置 20% 的缓冲区)对于大多数应用程序而言是足够的。如果您使用非常大的内存池,并且应用程序具有非常高的数据修改率,则最好将该大小增加到池的 1% 或 2%。运行 sp_sysmon 来查看建议,或与 SAP 技术支持联系以获取有关选择有效清洗大小的详细信息。
池的异步预取百分比的缺省值是由配置参数 global async prefetch limit 设置的。池限制始终高于全局限制。
若要禁用池中的预取操作(如果全局限制是非零数值),则将池的限制设置为 0。