2016-12-14 14 views
1

Какой процесс записывает файл данных в PostgreSQL?PostgreSQL-файл данных

И каковы файлы данных в postgreSQL?

Примечание: Выполнение операции Вставка/обновление/удаление на postgreSQL-9.5. Я хочу проверить, какой процесс выполняет фиксацию на Disk i.e Data File. Использование файла WAL и данных.

+1

http://www.cybertec.at/2016/11/postgresql-writer-and-wal-writer-processes-explained/ и https://en.wikibooks.org/wiki/PostgreSQL/Architecture –

+0

В настоящее время я запускаю множество запросов через jmeter.checkpoint_completion_target = 0,3, checkpoint_timeout = 30 с, сохраняя задержку в 30 секунд между каждым запросом, чтобы можно было проверить сброс данных в файле данных. –

+0

Для конкретной фиксации, выполняющей фиксацию, запись записи WAL, обозначающая транзакцию как зафиксированную, затем обновляет «PGPROC» для установки состояния разделяемой памяти.Но другие части работы, выполненные этой транзакцией, могут быть записаны bgwriter, изменения могут быть применены к куче позже с помощью checkpointer и т. Д. –

ответ

2

Файлы данных кластера базы данных PostgreSQL находятся под подкаталогом data каталога данных. Они написаны тремя процессами:

  • фон писатель процесс, который пишет грязные блоки из буфера на диск, чтобы гарантировать, что есть достаточно чистые блоки.

  • Процессcheckpointer, который записывает все грязных блоков на диск в определенное время (контрольные точки), чтобы обеспечить начальную точку для восстановления после сбоя.

  • Бэкэнд-процесс (процесс, который обслуживает клиентское соединение) записывает данные только на диск, если фоновый писатель не может идти в ногу со временем, и свободных блоков нет.

записи вперед журнал или WAL, расположенный в pg_xlog, это нечто совершенно иное. Он записывается с помощью внутреннего процесса непосредственно перед COMMIT, чтобы гарантировать, что информация, необходимая для восстановления транзакции в случае сбоя, безопасно записывается на диск. То же самое относится к журналу фиксации , который находится в pg_clog, который содержит информацию о совершении или откате транзакции.

Данные могут быть записаны в файл данных до COMMIT, но они становятся видимыми только при совершении транзакции.

Может быть, стоит отметить, что не только заявления DML вызывают блоки данных, которые будут испачканы:

  • Фоновый процесс “ ” автовакууминг регулярно просматривает таблицы и индексы и удаляет неиспользуемые записи.

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

+0

Да. TL; DR - «большинство процессов PostgreSQL записывают файлы в каталог данных. Каждая таблица представляет собой один или несколько файлов, а также другие специальные файлы. Никогда не изменяйте ничего в каталоге данных, кроме файлов .conf». –

 Смежные вопросы

  • Нет связанных вопросов^_^