我在表 t1
上有一个 Postgres GIN
索引,在 JSONB
列 a_col
上。
使用 gin (t1.a_col) 在 t1 上创建索引 i_1
这将约 2 秒的查询运行时间缩短为约 50 毫秒。
这个表有点活跃,每天有大约 1k 行新数据,没有更新/删除。
我看到的问题是这个索引的性能在几百次写入后急剧下降 - 查询性能回落到 ~2s。
运行 reindex
操作后问题得到解决。
REINDEX INDEX i_1
但这留下了一个问题,是什么导致指数运行如此糟糕?
最佳答案
在奔跑中
select * from pg_stat_all_tables 其中 relname = 't1'
我看到 n_mod_since_analyze
有 >2k 行并且 last_autoanalyze
已经过了几天。
通过将 autovacuum_analyze_scale_factor
的值从 0.05
降低到 0.002
,autoanalyze
开始频繁运行并开始以查看更一致的性能。
关于postgresql - Postgres GIN 索引性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54870880/