Extending Extended Statistics to Joins (PGConf.dev 2026)
Extending Extended Statistics to Joins (PGConf.dev 2026)
Расширение расширенной статистики на соединения (Extending Extended Statistics to Joins) PGConf.dev 2026 Представлено Александрой Ванг (Alexandra Wang) на PGConf.dev 2026 (https://2026.pgconf.dev) Точная оценка селективности соединений — одна из самых давних проблем в планировании запросов. Хотя расширенная статистика PostgreSQL, определяемая через CREATE STATISTICS, улучшает оценки планировщика для коррелированных фильтров и многоколоночных предикатов, планировщик в настоящее время применяет их только к сканированиям одной таблицы, а не к оценке селективности соединений. Это ограничение означает, что даже когда база данных имеет информацию о коррелированных столбцах, она всё равно предполагает независимость между таблицами при планировании соединений, что часто приводит к неоптимальным порядкам соединений и излишне дорогим планам. В этом докладе я представлю прототип патча для расширения статистического фреймворка PostgreSQL на соединения, сосредоточившись на сборе и использовании статистики MCV (наиболее частых значений) на уровне соединений для распространённых паттернов, включая, но не ограничиваясь, соединения по внешним ключам. Эта работа исследует расширения каталога, изменения в ANALYZE и интеграцию на стороне планировщика, которые позволяют предикатам соединений извлекать выгоду из реальных распределений данных соединений, а не из предположений о независимости. Я сосредоточусь на оценке и операционализации статистики соединений. В частности, я представлю результаты того, как улучшенная селективность влияет на решения о порядке соединений, качество плана и производительность выполнения, используя бенчмарки, чувствительные к порядку соединений. Я также представлю измерения затрат производительности на сбор статистики соединений во время ANALYZE и обсужу аспекты сопровождения, включая то, как статистика соединений взаимодействует с VACUUM, когда её следует обновлять и какие конфигурации могут потребоваться. https://2026.pgconf.dev/session/689