更新时间:2025-07-10 GMT+08:00

缓存管理函数

9.1.1.100集群版本开始DWS支持缓存管理函数,缓存管理函数将缓存从共享缓冲区(shared buffer)中释放,可有效加速查询,优化数据库性能。

只有系统管理员可以执行缓存管理函数。

缓存管理函数提供了三种粒度的接口用于释放缓存:

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)

pg_buffercache_evict()

描述:在当前实例上,释放所有未被pin住的缓冲页。

返回值类型:integer

返回值说明:被成功释放的缓冲页数。

示例:

1
2
3
4
5
SELECT pg_catalog.pg_buffercache_evict();
 pg_buffercache_evict 
----------------------
                 2654
(1 row)

pgxc_buffercache_evict()

描述:在所有实例上,释放所有未被pin住的缓冲页。

返回值类型:integer

返回值说明:被成功释放的缓冲页数。

示例:

1
2
3
4
5
SELECT pg_catalog.pgxc_buffercache_evict();
 pgxc_buffercache_evict 
------------------------
                  10881
(1 row)