Таблица часто обновляется, а HOT почти не срабатывает — 27 июля 2026 г. в 07:27:01.056
Таблица часто обновляется, а HOT почти не срабатывает Артефакт: n_tup_upd = 18 400 000 n_tup_hot_upd = 920 000 n_dead_tup = 3 700 000 n_tup_upd — общее число обновлений. n_tup_hot_upd — число HOT updates. n_dead_tup — оценка dead rows, а не точный размер bloat. HOT возможен, когда: — обновление не меняет данные, на которые ссылаются обычные индексы; — новая версия строки помещается на той же heap-странице. Проверять нужно не только простой индекс по колонке. Данные могут использоваться в составном, partial или expression index. Исключение — summarizing indexes, в основной поставке PostgreSQL это BRIN. Они не исключают HOT тем же способом. Если на исходной странице мало места, новая версия размещается на другой странице и обновление становится non-HOT. Более низкий fillfactor может оставить запас для будущих версий, но не гарантирует HOT и может увеличить число страниц таблицы. Что сопоставить: — запросы, которые чаще всего обновляют таблицу; — определения индексов; — n_tup_upd, n_tup_hot_upd и при доступности n_tup_newpage_upd; — текущий fillfactor; — размеры таблицы и индексов в динамике; — снимки статистики за один интервал. VACUUM освобождает место dead versions для повторного использования, но не устраняет все причины non-HOT updates. Вывод: низкая доля HOT — сигнал для диагностики, а не готовая рекомендация удалить индекс, изменить fillfactor или запустить VACUUM FULL. #УЦФОРС #PostgreSQL #DBA #ОптимизацияБД #Производительность

