Как обновляются файлы базы данных Postgres? - PullRequest
0 голосов
/ 15 октября 2018

Мне любопытно, как обновляются файлы /base для базы данных Postgres.Соответствуют ли сегменты сегментам каждой таблицы, так что только несколько файлов сегментов обновляются после обновления подмножества таблицы?Или обновление таблицы приведет к изменениям всех или большинства файлов сегментов?

По сути, меня интересует надежность этих обновлений файлов /base для целей резервного копирования.Учитывая использование WAL для PITR, я чувствую, что файлы не обновляются каким-либо согласованным образом для моих целей.

Согласно документации :

Когда таблица или индекс превышает 1 ГБ, они делятся на гигабайтные сегменты .Имя файла первого сегмента совпадает с именем файла;последующие сегменты называются filenode.1, filenode.2 и т. д. Такое расположение позволяет избежать проблем на платформах с ограничениями размера файлов.(На самом деле, 1 ГБ - это просто размер сегмента по умолчанию. Размер сегмента можно настроить с помощью параметра конфигурации --with-segsize при сборке PostgreSQL.) В принципе, для карты свободного пространства и вилок карты видимости может потребоваться несколько сегментов, хотя этовряд ли произойдет на практике.

1 Ответ

0 голосов
/ 16 октября 2018

По указанной вами ссылке вы также обнаружите, что таблицы и индексы организованы в блоки по 8 КБ, и строка таблицы всегда содержится в одном блоке.

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

Индексы менее предсказуемы: если обновление HOT, ничего не будет изменено.Если разделение страницы индекса становится необходимым, это может повлиять на несколько блоков.

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

WAL отвечает за долговечность всех транзакций с момента последней контрольной точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...