Split out of #2295, which fixed the growth mechanism (retention armed 17/17, #2150 text flip). What remains is the store's standing composition, measured on the use2 box (42-server fleet, store 196 GB on 2026-08-17):
Finding 1: query_plan_dim, 121 GB, 63% of the store
query_plan_dim is a plain dimension table, not a hypertable — so it sits outside both the compression policies and the retention horizons that now govern everything else. Plan XML accumulates forever, uncompressed beyond default TOAST pglz. The top-8 hypertables together are ~42 GB; this one table is ~3x all of them combined.
Levers worth costing, separately or together:
Finding 2: query_store_stats compresses 2.7x; its siblings do 10-30x
The biggest hypertable (24 GB) gets the worst compression ratio in the store by an order of magnitude. Suspects: segmentby/orderby misfit for its write pattern (wide rows, per-interval snapshots, high-cardinality query_id), or the dedup-read-side design (rn=1 over repeated open-interval snapshots) storing near-duplicate rows the compressor can't fold because segment boundaries split them. Note #2312/#2314 just cut open-interval re-snapshots by ~two thirds, which shrinks the inflow of near-duplicates — re-measure the ratio after a week of the new write pattern before touching compression settings.
Non-goal
Growth-rate emergency response — that was #2295's job and it's done (~2.8 GB/day at last measure, ~90-day runway, horizons armed).
Split out of #2295, which fixed the growth mechanism (retention armed 17/17, #2150 text flip). What remains is the store's standing composition, measured on the use2 box (42-server fleet, store 196 GB on 2026-08-17):
Finding 1: query_plan_dim, 121 GB, 63% of the store
query_plan_dimis a plain dimension table, not a hypertable — so it sits outside both the compression policies and the retention horizons that now govern everything else. Plan XML accumulates forever, uncompressed beyond default TOAST pglz. The top-8 hypertables together are ~42 GB; this one table is ~3x all of them combined.Levers worth costing, separately or together:
query_store_statsrow has aged past the 90-day horizon is unreachable by any read path — a periodic anti-join delete is the retention the table never had. Needs the same care as the [BUG] planwm: collector_state rows are never pruned for dropped databases #2188/[BUG] planwm/backfill state pruning does not reach Azure SQL DB #2191 state prunes (authoritative reachability, not a heuristic).lz4TOAST is available today and is a one-ALTERexperiment).Finding 2: query_store_stats compresses 2.7x; its siblings do 10-30x
The biggest hypertable (24 GB) gets the worst compression ratio in the store by an order of magnitude. Suspects:
segmentby/orderbymisfit for its write pattern (wide rows, per-interval snapshots, high-cardinalityquery_id), or the dedup-read-side design (rn=1 over repeated open-interval snapshots) storing near-duplicate rows the compressor can't fold because segment boundaries split them. Note #2312/#2314 just cut open-interval re-snapshots by ~two thirds, which shrinks the inflow of near-duplicates — re-measure the ratio after a week of the new write pattern before touching compression settings.Non-goal
Growth-rate emergency response — that was #2295's job and it's done (~2.8 GB/day at last measure, ~90-day runway, horizons armed).