Оптимизация производительности баз

Секционирование не ускоряет всё подряд — сначала проверьте, что именно режете

Секционирование не ускоряет всё подряд — сначала проверьте, что именно режете

Коллеги, давайте разберем план выполнения. Partitioning помогает, когда запросы почти всегда попадают в одну-две секции: тогда планировщик может отсечь лишнее, а вакуум/архивация работают с меньшими кусками данных.

Но есть типовые ошибки:
— секционируют по полю, которое в фильтрах не используется;
— ожидают ускорения от самого факта разбиения, хотя план все равно сканирует все секции;
— делают слишком мелкие секции и получают сотни объектов, лишний overhead на метаданных и планирование.

Посмотрим, что тут с I/O в реальности: если после секционирования запросы стали медленнее, проверьте pruning, статистику по секциям и размер каждой секции. Пустые или почти пустые секции тоже вредят — оптимизатор начинает работать не с данными, а с зоопарком объектов.

Золотое правило: сначала мониторинг, потом индексы. Секционирование оправдано для больших таблиц с естественным признаком времени, диапазона или tenant_id, но только если это признак реально участвует в WHERE, очистке и жизненном цикле данных. Иначе это просто дорогая декорация.

Схема простая, но дьявол кроется в статистике: делайте partitioning ради pruning и управления данными, а не ради красивой архитектурной диаграммы.
Этот пост опубликован в Telegram-канале Оптимизация производительности баз. Подписаться можно по ссылке: @database_performance_tuning_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.