本文介绍了PolarDB PostgreSQL版(兼容Oracle)的Global CatCache功能。
背景信息
原生PostgreSQL将Cat/Sys Cache保存在各个进程私有内存中,在连接数较多时,会消耗较多内存,部分极端场景下甚至出现OOM的风险。
PolarDB PostgreSQL版(兼容Oracle)引用了Global CatCache功能,将Cat/Sys Cache保存在所有进程都可以访问的共享内存中,确保Cat/Sys Cache的内存消耗不再受连接数的影响,大大提高了服务稳定性。
参数说明
参数 | 级别 | 说明 |
polar_enable_global_catcache | PGC_USERSET | 用于开启或关闭Global CatCache。取值如下:
|
polar_global_catcache_size | PGC_SIGHUP | 用于设置Global CatCache的容量大小。保持默认值即可,单位为MB。 说明 可以根据需求调整Global CatCache容量,一般使用默认值即可。 |
polar_catcache_size | USERSET | 用于设置进程内部CatCache容量大小,即每个进程内部的CatCache可以缓存的缓存对象个数。可以针对单个Session设置,也可以全局设置。 |
监控
所有监控接口都在polar_global_cache
插件中,执行以下命令,创建插件。
create extension polar_global_cache;
polar_global_catcache_stat视图
您可以通过polar_global_catcache_stat
视图查看Global CatCache的状态信息。
table polar_global_catcache_stat;
-[ RECORD 1 ]-------+----
elems | 34
nlookup | 853
nlookup_miss | 852
ninsert | 34
nmove | 0
ndelete | 0
ninvalidate | 0
nflush | 0
nevict | 0
nevict_active | 0
nevict_fail | 0
nlookup_clist | 41
nlookup_miss_clist | 41
ninsert_clist | 0
nmove_clist | 0
ndelete_clist | 0
ninvalidate_clist | 0
nevict_clist | 0
neivct_active_clist | 0
rehash_fail | 0
meta_alloc_fail | 0
data_alloc_fail | 0
lru_active_len | 0
lru_inactive_len | 34
component_id | 1
指标说明:
指标 | 说明 |
nlookup | 查询次数。 |
nlookup_miss | 查询未命中的次数。结合 |
ninsert | 新插入次数。 |
ndelete | 删除次数。正常情况下为0,缩容时可能会递增。 |
ninvalidate | 失效次数。 |
nflush | 由于特殊缓存失效消息或者 |
neivct | Global CatCache淘汰的总个数。 说明 Global CatCache中的对象按照LRU进行淘汰,分为active list和nactive list,优先淘汰inactive list中的缓存。而淘汰的过程中,可能因为当前的对象正在使用或者一些并发冲突导致按照LRU策略应该淘汰的对象却无法淘汰,这种情况无需关心。 nevict相关指标不为0说明当前容量不足,为避免影响性能,可以通过 |
neivct_active | Global CatCache淘汰处于active list中的个数。 |
neivct_fail | Global CatCache淘汰失败的次数。 |
rehash_fail | Global CatCache内部的管理hash table可能因为内存不足导致rehash失败的次数。 |
meta_alloc_fail | Global CatCache内部相关元数据共享内存分配失败,可以通过调大 |
data_alloc_fail | Global CatCache容量不足,可以通过 |
polar_catcache_stat视图
您可以通过polar_catcache_stat
视图查看进程内部的CatCache的状态信息。
指标为polar_global_catcache_stat
的子集,指标说明和polar_global_catcache_stat
一致。
table polar_catcache_stat;
-[ RECORD 1 ]------+-----
nlookup | 2060
nlookup_miss | 898
ninsert | 883
ndelete | 753
ninvalidate | 0
nevict | 753
nevict_active | 2
evict_fail | 0
nlookup_clist | 41
nlookup_miss_clist | 41
ninsert_clist | 41
ndelete_clist | 4