Перейти к содержимому
9 / 15

Декларативное партиционирование в PostgreSQL: когда помогает и как выбрать ключ?

Партиционирование режет одну логическую таблицу на физические части по ключу: RANGE (обычно по времени), LIST (по перечислимому признаку, например региону) или HASH (равномерное распределение). Выигрыш возникает в трёх местах: отсечение партиций — планировщик читает только нужные части; обслуживаниеDROP TABLE старой партиции вместо DELETE миллионов строк, что несравнимо дешевле и не порождает мёртвых версий; параллелизм и локальность — индексы каждой партиции меньше и лучше кэшируются. Выигрыша не возникает, если запросы не содержат ключ партиционирования: тогда каждый запрос идёт во все партиции, и становится хуже, чем было. Практические ориентиры: партиционирование окупается от нескольких десятков гигабайт или там, где нужен быстрый отстрел старых данных; число партиций держат в сотнях, а не в десятках тысяч; уникальность обеспечивается только с ключом партиционирования в составе индекса.

Декларативное партиционирование в PostgreSQL: когда помогает и как выбрать ключ? | JScriptiser