feat(tradein/db): дроп дублирующего listings_geom_idx — geography-двойник несёт всю работу (#2997)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m45s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m45s
Критерий (размечен 21.08 ДО окна) выполнен, окно склеено через переезд: замороженный Beget — 4 116 сканов против 217 712 у geog за всю историю (прирост +164/4д — вырожденные IS NOT NULL-планы, паттерн #3020); живой Poincare — 0 сканов за двое суток; EXPLAIN горячего пути — geog; свип кода — ни одного пространственного оператора по голому listings.geom. Экономия 115 МБ + минус одна индексная запись на каждый не-HOT апдейт (их 20.86 млн). CONCURRENTLY по образцу 270, идемпотентно, откат — CREATE INDEX CONCURRENTLY (в шапке миграции). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ff2335899e
commit
49683b7800
1 changed files with 26 additions and 0 deletions
26
tradein-mvp/backend/data/sql/273_drop_listings_geom_idx.sql
Normal file
26
tradein-mvp/backend/data/sql/273_drop_listings_geom_idx.sql
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
-- 273_drop_listings_geom_idx.sql
|
||||||
|
-- #2997: снять дублирующий geometry-индекс listings — geography-двойник несёт всю работу.
|
||||||
|
--
|
||||||
|
-- Критерий дропа (размечен 21.08, датирован окном до 28.08) выполнен с запасом,
|
||||||
|
-- окно склеено из двух половин (переезд 25.08 разорвал счётчики):
|
||||||
|
-- * замороженная база Beget (вся история до 25.08 17:23):
|
||||||
|
-- listings_geom_idx 4 116 сканов / 115 МБ
|
||||||
|
-- listings_geom_geog_idx 217 712 сканов / 212 МБ (53×)
|
||||||
|
-- прирост geom за последние 4 дня Beget (+164) — вырожденные планы
|
||||||
|
-- `geom IS NOT NULL` (bitmap без пространственного условия), тот же паттерн,
|
||||||
|
-- который у houses устранил geog-индекс #3020;
|
||||||
|
-- * живая база Poincare (25.08→27.08): geom — 0 сканов, geog — работает;
|
||||||
|
-- * EXPLAIN горячего запроса эстиматора (радиус через geography) — идёт по
|
||||||
|
-- listings_geom_geog_idx, geom-индекс в плане не участвует;
|
||||||
|
-- * свип кода: ни одного пространственного оператора по голому listings.geom
|
||||||
|
-- (оба ST_DWithin в geometry-space бьют по cadastre_buildings.geom,
|
||||||
|
-- listings там внешняя сторона).
|
||||||
|
--
|
||||||
|
-- Экономия: 115 МБ + минус одна индексная запись на каждый из 20.86 млн
|
||||||
|
-- не-HOT апдейтов listings; на московском объёме — кратно больше (#2997).
|
||||||
|
--
|
||||||
|
-- CONCURRENTLY и без BEGIN — по образцу 270: раннер исполняет по операторам,
|
||||||
|
-- CONCURRENTLY нельзя в транзакции, lock-гейт эту форму не требует прикрывать.
|
||||||
|
-- Идемпотентно (IF EXISTS). Восстановление при неожиданном регрессе планов:
|
||||||
|
-- CREATE INDEX CONCURRENTLY listings_geom_idx ON listings USING GIST (geom);
|
||||||
|
DROP INDEX CONCURRENTLY IF EXISTS listings_geom_idx;
|
||||||
Loading…
Add table
Reference in a new issue