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

<b>Секционирование таблиц не лечит медленные запросы, если фильтр не попадает в ключ</b>

<b>Секционирование таблиц не лечит медленные запросы, если фильтр не попадает в ключ</b>

Коллеги, давайте разберем план выполнения. Partitioning — это не «ускоритель всего», а способ уменьшить объем данных, с которыми реально работает запрос. Если условия WHERE не используют ключ секции, оптимизатор спокойно пойдет по всем партициям, и вы получите сложность без выигрыша.

Смотрите на три вещи:
— как выбирается секция: по дате, диапазону, списку значений;
— есть ли pruning: отсекаются ли лишние партиции на этапе планирования;
— не ломает ли секционирование джойны, уникальность и обслуживание.

Частая ошибка — секционировать по одному полю, а фильтровать по другому. Тогда таблица красиво нарезана, но запросы все равно читают лишнее. Еще один классика: слишком мелкие партиции. Метаданные растут, план усложняется, обслуживание превращается в ручной труд с лишним I/O и блокировками.

<b>Золотое правило: сначала мониторинг, потом индексы.</b> Перед внедрением посмотрите реальные планы, объемы чтения и типовые запросы. Если нужен архив, горячие данные отдельно, а старые секции можно быстро чистить или переносить. Если нужен только ускоритель SELECT, иногда обычный индекс честнее и дешевле.
Этот пост опубликован в Telegram-канале Оптимизация производительности баз. Подписаться можно по ссылке: @database_performance_tuning_arb.
tech

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

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

start

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

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

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