Вопрос о контрольных точках при большой загрузке данных? - PullRequest
1 голос
/ 21 июня 2011

Это вопрос о том, как работает PostgreSQL. Во время больших загрузок данных с помощью команды «COPY» я вижу несколько контрольных точек, в которых 100% файлов журнала (checkpoint_segments) перерабатываются.

Я не понимаю этого, наверное. Что делает pgsql, когда одна транзакция требует больше места, чем доступные файлы журнала? Кажется, что это происходит несколько раз в ходе этой загрузки, которая представляет собой одну транзакцию. Чего мне не хватает?

Все работает, я просто хочу лучше понять это на случай, если я смогу что-то настроить и т.д.

1 Ответ

1 голос
/ 21 июня 2011

Когда возникает контрольная точка, все грязные страницы записываются на диск. Поскольку эти страницы больше не могут быть потеряны, им больше не нужен журнал для них, поэтому они сохраняются для повторного использования. Запись грязных страниц на диск не означает, что эти данные зафиксированы. БД может видеть из метаданных, хранящихся в каждой строке, что он принадлежит транзакции, которая еще не зафиксирована, и он также может прервать эту транзакцию, и в этом случае вакуум в конечном итоге очистит эти строки.

При загрузке больших объемов данных рекомендуется временно увеличить checkpoint_segments .

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