Оба места утверждали, что у Домклика один выделенный резидентный прокси и пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла резервацию узла), но текст остался — и именно на него опирался тикет #3189, поставленный под «калибровку» ограничения, которого не существует. Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к нему в PR #3222. Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик провалов lease, а break по первому DomClickBlockedError (#2854) — до ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0. Только комментарии, поведение не меняется. Миграция 175 уже применена, а _schema_migrations трекает по имени файла без checksum — правка текста её не перезапустит.
38 lines
2.3 KiB
PL/PgSQL
38 lines
2.3 KiB
PL/PgSQL
-- Контекст: индекс дефицита #1959 (эпик #1953) — «−1.00 везде».
|
||
--
|
||
-- Прогнозный движок дефицита (compute_demand_supply_forecast) дедуплицирует
|
||
-- objective_lots до ПОСЛЕДНЕГО снапшота на каждый ФИЗИЧЕСКИЙ лот
|
||
-- (objective_lots — append-per-snapshot, ~2.9× инфляция строк; без дедупа спрос И
|
||
-- предложение оба раздуты симметрично → каждая ячейка what_to_build даёт один и тот
|
||
-- же ratio → все deficit_index = −1.0). Дедуп делается через
|
||
-- SELECT DISTINCT ON (project_name, corpus_name, section, floor, lot_number) …
|
||
-- ORDER BY project_name, corpus_name, section, floor, lot_number,
|
||
-- snapshot_date DESC, id DESC
|
||
-- по квартирам (premise_kind='квартира'). Этот partial index точно совпадает с
|
||
-- ключом DISTINCT ON и его направлениями сортировки → планировщик берёт Index-Only
|
||
-- Scan + Unique вместо сортировки 1.75M строк (EXPLAIN на prod: Sort исчезает,
|
||
-- cost ≈ 122k вместо полной сортировки).
|
||
--
|
||
-- DESC на snapshot_date/id — чтобы «последний снапшот первым» читался прямо из
|
||
-- индекса (DISTINCT ON берёт первую строку каждой группы). premise_kind в WHERE —
|
||
-- partial index только по квартирам (единственный сегмент дефицит-расчёта), меньше
|
||
-- и плотнее, чем полный.
|
||
--
|
||
-- Порядок применения: миграция ПЕРВОЙ (deploy first), затем backend-код, который
|
||
-- использует DISTINCT ON. Idempotent (CREATE INDEX IF NOT EXISTS) — безопасно при
|
||
-- ре-apply. Self-wrapped BEGIN/COMMIT.
|
||
BEGIN;
|
||
|
||
CREATE INDEX IF NOT EXISTS objective_lots_physflat_latest_idx
|
||
ON objective_lots (
|
||
project_name,
|
||
corpus_name,
|
||
section,
|
||
floor,
|
||
lot_number,
|
||
snapshot_date DESC,
|
||
id DESC
|
||
)
|
||
WHERE premise_kind = 'квартира';
|
||
|
||
COMMIT;
|