Что означает значение n_live_tup и n_dead_tup в pg_stat_user_tables


Ответы:


28

Эти два столбца являются результатом

SELECT pg_stat_get_live_tuples(c.oid) AS n_live_tup
     , pg_stat_get_dead_tuples(c.oid) AS n_dead_tup
FROM   pg_class c;

Представление количества живых и мертвых строк (кортежей) в таблице.
Найдите эти функции в руководстве .

Мертвые строки - это удаленные строки, которые впоследствии будут повторно использоваться для новых строк из INSERTs или UPDATEs (пробел, а не данные). Некоторые мертвые строки (или зарезервированное свободное пространство) могут быть особенно полезны для обновлений HOT (кортежи только для кучи), которые могут эффективно использовать пространство на той же странице данных. Больше на HOT:

Или мертвые строки могут быть удалены VACUUM FULL(или простыми, VACUUMесли повезет) или подобными операциями над таблицей, соответственно уменьшая физическую таблицу.

Всякий раз, когда строка удаляется или обновляется, старая версия строки становится невидимой для всех других транзакций, начинающихся после ее фиксации. Строка полностью сдохла, как только больше нет незафиксированных старых транзакций. Это необходимо для модели MVCC PostgreSQL для обработки параллелизма.

Это просто статистика . Вам нужно включить сбор статистики, postgresql.confесли вы хотите, чтобы они обновлялись автоматически. track_countsпо умолчанию должен быть включен. Имейте в виду, что статистика не обновляется мгновенно. Подробнее об этом читайте в руководстве .


Что такое кортежи только для кучи? Когда я выпускаю SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';Почему это показывает ноль? mytableимеет 6 рядов.
Маджид Азими

@MajidAzimi: я добавил немного к своему ответу.
Эрвин Брандштеттер

5
@MajidAzimi Если вы хотите узнать много о MVCC и HoT, посмотрите слайды из презентации Павана Деоласи на PGCon'08
dbenhur

@dbenhur: хорошая ссылка! Презентация очень хорошо сделана и проста для понимания.
Эрвин Брандштеттер

@dbenhur Ссылка сейчас кажется мертвой.
Арье Лейб Таурог
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.