功能背景
在大规模复杂业务场景下,进程长连接,且该连接打开了很多的表、索引等,导致 syscache 和 relcache 缓存压力巨大,进而导致内存占用过高或缓存命中率下降,影响整体性能。
功能介绍
云数据库 PostgreSQL 支持基于 LRU ( Least Recently Used )的 syscache 和 relcache 缓存淘汰机制,用户开启功能后,您可以设定一个进程最大允许的 syscache/relcache 数量。系统能够动态识别和淘汰长时间未被访问的关系缓存,优先保留热点元数据缓存,降低内存占用。
支持版本
内核小版本为 v13.20_r1.21、v14.17_r1.29、v15.12_r1.15、v16.8_r1.9、v17.4_r1.3 及以上的数据库实例支持该功能。您也可以通过 内核小版本升级 获取该功能。
适用场景
长连接环境下的 syscache / relcache 缓存管理。
使用说明
对于 syscache ,系统提供两个参数,用于管理 syscache 淘汰机制。
参数名称 | 说明 | 取值建议 |
tencentdb_syscache_max_num | 一个进程最多能拥有多少个 syscache ,超过此数量开始进行缓存淘汰。 默认值为-1 ,表示不开启该功能。 | 如果发现进程内存占用过高,或者 syscache 数量异常增长,建议取值范围10000 - 50000。 如需进行修改,可选取20000等中间值,根据监控和实际效果逐步调整。 |
tencentdb_syscache_evict_num | 一次淘汰会清理多少个 syscache。 默认值为1,表示一次只淘汰一个。 | 一般情况下,保持默认值1即可,保证淘汰过程平滑、对性能影响较小。 如果 syscache 增长较快,或者需要更快释放内存,可以适当提高该值为5 - 10 ,但不建议设置过大,以免一次性淘汰过多缓存影响查询性能。 |
对于 relcache ,系统提供两个参数,用于管理 relcache 淘汰机制:
参数名称 | 说明 | 取值建议 |
tencentdb_relcache_max_num | 一个进程最多能拥有多少个 relcache ,超过此数量开始进行缓存淘汰。 默认值为-1 ,表示不开启该功能。 | 如果系统中存在大量表或频繁访问不同表,可能导致 relcache 数量激增,建议取值范围为1000 - 5000,具体数值请根据实例的内存大小和负载情况调整。 如果实例内存充足且访问表数量不多,可以保持默认值-1,关闭该功能,避免频繁淘汰带来的性能开销。 |
tencentdb_relcache_evict_num | 一次淘汰会清理多少个 relcache。 默认值为1,表示一次只淘汰一个。 | 如果希望淘汰更快释放缓存,可以适当调大该值,比如5 - 10,减少淘汰次数,但可能带来瞬时性能波动。 如果希望淘汰过程更平滑,避免对性能产生较大影响,保持默认值1较为稳妥。 |
操作步骤
进入 云数据库 PostgreSQL 控制台 ,在需要管理 relcache 缓存的实例详情页,选择参数设置,单击参数运行值后的
,根据需要修改 tencentdb_syscache_max_num 、tencentdb_syscache_evict_num 、tencentdb_relcache_max_num 和 tencentdb_relcache_evict_num 的参数值。

