功能背景
功能介绍
云数据库 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 的参数值。