3
Фоновые процессы
Фиксированный набор служебных процессов
postmaster
walwriter
checkpointer
autovacuum
и другие
Динамически порождаемые фоновые процессы
контролируются процессом postmaster
имеют доступ к разделяемой памяти
могут устанавливать внутреннее соединение с базами данных
реализуются на языке C
PostgreSQL состоит из набора взаимодействующих процессов.
За основными процессами закреплены собственные имена и они
имеют особый смысл для сервера. Например, при остановке
экземпляра нужно записать в журнал сообщение о завершении
контрольной точки, поэтому процесс walwriter надо останавливать
после checkpointer, и т. п. Обычно (хотя и не всегда) такие процессы
работают постоянно от старта сервера до его останова.
Но вместе с тем часто возникает необходимость временно запустить
процесс, который выполнит необходимую работу и завершится. Такую
возможность предоставляет механизм фоновых процессов
Как и все остальные, фоновые процессы порождаются и
контролируются процессом postmaster. Фоновые процессы имеют
все возможности, такие как доступ к разделяемой памяти сервера
и соединение с базами данных по внутреннему протоколу SPI
(рассматривается в теме «Языки программирования»).
Фоновые процессы должны быть написаны на языке C, пример можно
найти в исходном коде (src/test/modules/worker_spi).
Заметим, что процесс автоочистки (autovacuum launcher) тоже
динамически порождает рабочие процессы (autovacuum worker),
но исторически делает это по-своему, не используя общий механизм
фоновых процессов.