更新时间:2025-07-10 GMT+08:00
缓存管理函数
9.1.1.100集群版本开始DWS支持缓存管理函数,缓存管理函数将缓存从共享缓冲区(shared buffer)中释放,可有效加速查询,优化数据库性能。
只有系统管理员可以执行缓存管理函数。
缓存管理函数提供了三种粒度的接口用于释放缓存:
- 释放指定缓冲页,对应函数pg_buffercache_evict(bufferid integer)。
- 释放指定表的所有缓冲页,对应函数pg_buffercache_evict(nsp_name name, rel_name name, partition_name name, temp_nsp_name name)、pgxc_buffercache_evict(nsp_name name, rel_name name, partition_name name, temp_nsp_name name)。
- 释放所有缓冲页,对应函数pg_buffercache_evict()和pgxc_buffercache_evict()。
被pin的缓冲页不会被缓存管理函数释放。
pg_buffercache_evict(bufferid integer)
描述:释放指定ID的缓冲页。
返回值类型:bool
返回值说明:缓冲页是否被释放并成功写入磁盘。
示例:
1 2 3 4 5 |
SELECT pg_catalog.pg_buffercache_evict(1); pg_buffercache_evict ---------------------- t (1 row) |
pg_buffercache_evict(nsp_name name, rel_name name, partition_name name, temp_nsp_name name)
描述:在当前实例上,释放指定表的所有未被pin住的缓冲页。
参数说明:根据不同的表类型,需要传入不同的参数值。具体参见表2。
返回值类型:integer
返回值说明:被成功释放的缓冲页数。
示例:
1 2 3 4 5 |
SELECT pg_catalog.pg_buffercache_evict('public', 't1', NULL, NULL); pg_buffercache_evict ---------------------- 4 (1 row) |
pgxc_buffercache_evict(nsp_name name, rel_name name, partition_name name, temp_nsp_name name)
描述:在所有实例上,释放指定表的所有未被pin住的缓冲页。
参数说明:根据不同的表类型,需要传入不同的参数值。具体参见表2。
返回值类型:integer
返回值说明:被成功释放的缓冲页数。
示例:
1 2 3 4 5 |
SELECT pg_catalog.pgxc_buffercache_evict('public', 't1', NULL, NULL); pgxc_buffercache_evict ------------------------ 10 (1 row) |