• Не запускается напрямую — только через postmaster в ответ на входящее соединение.

Backend (дочерний процесс) — «исполнитель запросов»

  • Запускается postmaster’ом при каждом новом клиентском подключении (через libpq, psql, приложение и т.д.).
  • Один backend — одно клиентское соединение: если у вас 10 подключений, будет 10 backend-процессов.
  • Полностью отделён от других backend’ов по стеку вызовов и состоянию, но работает с общей памятью и диском (через shared buffers, WAL, lock table и т.д.).
  • Обрабатывает весь жизненный цикл сессии:
    • Аутентификация (через pg_hba.conf)
    • Выполнение SQL-запросов (DML, DDL, транзакции)
    • Управление транзакциями (BEGIN, COMMIT, ROLLBACK)
    • Взаимодействие с Lock Manager для получения/освобождения блокировок
    • Чтение/запись данных через shared buffers и local buffers
    • Генерация WAL-записей при изменениях
  • Не является фоновым процессом — он «живёт» только пока открыто клиентское соединение.
  • При завершении соединения backend завершается, освобождая ресурсы (но shared memory остаётся).
  • Может участвовать в репликации:
    • На primary — может стать WAL sender, если подключается standby.
    • На standby — не создаётся для обычных подключений в режиме recovery, если только не включён hot_standby = on (тогда создаются read-only backend’ы).