Commit graph

2 commits

Author SHA1 Message Date
lekss361
7b32edc34d
fix(db): DROP dead BRIN index rosreestr_deals_period_brin (#122)
Per code review audit (May 14): BRIN index на partitioned parent table dead
weight. PG16 НЕ propagates такие индексы на child partitions; pg_stat
показывает idx_scan=0 → никогда не использовался.

## Why dead

rosreestr_deals — yearly partitioned по period_start_date. Queries делают
partition pruning через partition key. BRIN index на parent существует, но:
1. На child partitions его нет (PG16 не reflects)
2. Parent сам не имеет данных (partitioned out)
3. Queries никогда не trigger BRIN scan

Maintenance overhead (storage, autoanalyze) без value.

## Migration

`data/sql/89_drop_dead_brin_rosreestr_deals.sql` — атомарный DROP с idempotent
`IF EXISTS`. Apply order: после 88_*.

## Cleanup

`data/sql/01_schema_rosreestr_deals.sql:65-67` — закомментировал оригинальное
CREATE с note: fresh DB bootstrap НЕ создаст index заново.

## Rollback path

Если в будущем нужен range scan optimization — re-create per-partition:
```sql
CREATE INDEX rosreestr_deals_2024q1_period_brin
  ON rosreestr_deals_2024q1 USING BRIN (period_start_date);
-- per-partition × N partitions
```

Но обычно partition pruning достаточно. Измерь EXPLAIN перед re-creation.

## Vault

`fixes/Migration_Drop_Dead_Brin_May14.md` создан (status: ready_to_apply).

Apply на prod: `psql ... -f data/sql/89_drop_dead_brin_rosreestr_deals.sql`
после merge.

Co-authored-by: lekss361 <claudestars@proton.me>
2026-05-14 23:29:01 +03:00
lekss361
c13cbaef2e add data 2026-04-26 22:30:52 +03:00