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

Partitioning помогает не ускорить всё подряд, а правильно ограничить объём работы

Partitioning помогает не ускорить всё подряд, а правильно ограничить объём работы

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

Перед внедрением проверьте три вещи:
— есть ли стабильный критерий отсечения секций;
— совпадает ли он с типовыми WHERE/JOIN;
— не превратится ли обслуживание в ручной квест с сотней объектов.
Схема простая, но дьявол кроется в статистике: без неё оптимизатор легко выбирает полный проход по всем секциям, и весь смысл partition pruning испаряется.

Отдельно смотрите на DML. Массовые INSERT/UPDATE/DELETE по секционированной таблице часто упираются не в «скорость доступа», а в блокировки, локи на каталоги и накладные расходы на маршрутизацию строк. И да, глобальные индексы, если они есть, могут съесть часть выигрыша на записи и бэкапах.

Золотое правило: сначала мониторинг, потом индексы. Сначала измерьте, сколько запросов реально отсекают секции, сколько времени уходит на I/O и сколько стоит обслуживание. Если выигрыш неочевиден, partitioning лучше оставить как инструмент для жизненного цикла данных, а не как универсальное ускорение.
Этот пост опубликован в Telegram-канале Оптимизация производительности баз. Подписаться можно по ссылке: @database_performance_tuning_arb.
tech

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

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

start

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

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

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