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