Postgres GIN 索引性能下降

Postgres GIN Index Performance Degregation

我在 table、t1JSONBa_col 上有一个 Postgres GIN 索引。

CREATE INDEX i_1 ON t1 USING gin (t1.a_col)

这需要约 2 秒的查询 运行时间减少到约 50 毫秒。

这个 table 有点活跃,每天获取约 1k 行新数据,没有 updates/deletes。

我看到的问题是这个索引的性能在几百次写入后急剧下降 - 查询性能回落到 ~2s。

问题在 运行 执行 reindex 操作后得到解决。

REINDEX INDEX i_1

但这留下了一个问题,是什么将指数推向 运行 如此糟糕?

虽然运行宁

select * from pg_stat_all_tables where relname = 't1'

我看到 n_mod_since_analyze 有超过 2k 行并且 last_autoanalyze 已经过了几天。

通过将 autovacuum_analyze_scale_factor 的值从 0.05 降低到 0.002autoanalyze 开始 运行 频繁移动并开始看到更一致的性能。