Карта видимости
Эта страница переведена при помощи нейросети GigaChat.
Каждое отношение таблицы имеет карту видимости (VM), чтобы отслеживать, какие страницы содержат только кортежи, которые, как известно, видны всем активным транзакциям; она также отслеживает, какие страницы содержат только замороженные кортежи. Она хранится вместе с основными данными отношения в отдельной вилке отношения, названной в честь номера файла узла отношения, плюс суффикс _vm
. Например, если номер файла узла связи равен 12345, VM хранится в файле под названием 12345_vm
, в том же каталоге, что и основной файл связи. Обратите внимание, что индексы не имеют VM.
Карта видимости хранит два бита для каждой кучи страниц. Первый бит, если он установлен, указывает, что страница полностью видима или, другими словами, что на странице нет кортежей, которые нужно было бы пропылесосить. Эта информация также может быть использована при только индексных сканированиях, чтобы отвечать на запросы, используя только индексный кортеж. Второй бит, если он установлен, означает, что все кортежи на странице были заморожены. Это означает, что даже vacuum
против оборачивания не должен повторно посещать страницу.
Эта карта является консервативной, поскольку гарантирует, что установка бита происходит только в том случае, когда соответствующее условие подтверждено. Если же бит не установлен, состояние условия не определено и может как соответствовать, так и не соответствовать действительности. Биты карты видимости устанавливаются только пылесосом, но очищаются любой операцией изменения данных на странице.
Модуль pg_visibility можно использовать для изучения информации, хранящейся в карте видимости.