PostgreSQL и горячие индексы: как не раздувать запись без пользы
Когда индекс действительно помогает PostgreSQL, а когда только увеличивает цену записи и объем хранилища.
На нагруженных таблицах соблазнительно индексировать почти все поля, которые однажды понадобились в фильтре, но со временем это начинает бить по скорости записи и размеру индексов. Намного полезнее сначала посмотреть на реальные запросы, частоту обновлений и понять, какие индексы участвуют в критичных сценариях постоянно.
Быстрый ориентир
Если индекс помогает редкому отчету, но замедляет каждую запись в потоковую таблицу, он обычно должен жить отдельно от основного OLTP-контура. Хорошая практика — держать минимальный набор горячих индексов на рабочем столе данных и переносить тяжелую аналитику в слой репликации или агрегатов.
select relname as index_name,
idx_scan,
idx_tup_read,
idx_tup_fetch
from pg_stat_user_indexes
where schemaname = 'public'
order by idx_scan desc;Ниже добавил тестовый YouTube-блок с предпросмотром, чтобы проверить, как такие материалы будут смотреться внутри статьи.