chore(tradein/db): уборка временных таблиц, дублей индексов и звёздочки в v_data_quality #2746
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2746
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "chore/tradein-db-cleanup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Волна 0 инвентаризации техдолга. Две миграции, обе только убирают лишнее.
Миграция 222 — уборка
Временные таблицы разовой чистки 02.07 —
tmp_purged_junk_houses_0702,tmp_purged_junk_links_0702(2.9 МБ). Зависимостей нет, проверено.Пять строгих дублей индексов. Каждый дублирует UNIQUE-ограничение по тому же набору колонок в том же порядке:
agentsagents_source_ext_idxagents_ext_source_ext_agent_id_keyekb_geoportal_buildingsix_ekb_geoportal_buildings_street_house..._street_norm_house_norm_keyhouse_placement_historyhph_source_item_idx..._source_ext_item_id_keyhouse_reviewshr_source_ext_idx..._source_ext_review_id_keysellerssellers_source_idxsellers_source_ext_seller_id_keyАудит предполагал шесть — нашлось ровно пять, проверено тремя независимыми способами (нормализованный DDL,
indkey/indoption/opclassчерезpg_index). Расхождение зафиксировано намеренно, а не подогнано.Два похожих кандидата НЕ тронуты —
oph_listing_time_idxиhpd_house_dim_idx. Там смешанный порядок(ASC, DESC), недостижимый обратным сканом UNIQUE-индекса — тот же класс исключения, что и уже задокументированныеidx_lss_source_date/listings_snapshots_listing_date_idx.v_data_quality— пересоздана с явным перечислением колонок вместоSELECT *. Сейчас звёздочка тянет 92 зависимости отlistings, что мешает менять таблицу. Поведение представления не меняется.Миграция 225 — индекс под внешний ключ
listing_source_snapshots(run_id)— внешний ключ без индекса на таблице в 3,2 млн строк. СоздаётсяCONCURRENTLY, поэтому файл намеренно безBEGIN/COMMIT.Проверено, что это безопасно: applier в
deploy-tradein.ymlвызываетpsql -v ON_ERROR_STOP=onбез--single-transaction, то есть транзакцию не навязывает. Прецеденты уже применены на проде безBEGIN/COMMIT:003_seed_deals.sql,005_geocode_tracking.sql,218_scrape_runs_ban_kind.sql,223_scrape_runs_time_columns_meaning.sql.Проверка
Обе миграции прогнаны на прод-БД внутри
BEGIN … ROLLBACK, тело дважды: первый проход выполняет, второй — сплошныеalready exists / does not exist, skipping.SELECTиз пересозданного представления возвращает валидные данные.Состояние прода после прогона проверено отдельно и независимо: временные таблицы на месте, все пять индексов на месте,
idx_lss_run_idне создан,v_data_quality— 16 колонок и 92 зависимости, то есть не изменена, в_schema_migrationsзаписей нет. Ничего не закоммичено.pytest— 3904 passed, 10 skipped, 0 failed. Тесты манифеста миграций 4/4.Номера
222 и 225. Сверены не только по
main, но и по всем удалённым веткам (~300) — сегодня коллизия префиксов ловилась четырежды, причём последний раз именно от соседнего открытого PR. Во время работы вmainвлился #2547 (занял 229/231) — пересверено после ребейза, пересечений нет.