

# Processo do RDS para PostgreSQL
<a name="PostgreSQL.Tuning.concepts.processes"></a>

O RDS para PostgreSQL utiliza vários processos.

**Topics**
+ [Processo Postmaster](#PostgreSQL.Tuning.concepts.postmaster)
+ [Processos de backend](#PostgreSQL.Tuning.concepts.backend)
+ [Processos em segundo plano](#PostgreSQL.Tuning.concepts.vacuum)

## Processo Postmaster
<a name="PostgreSQL.Tuning.concepts.postmaster"></a>

O *processo de postmaster* é o primeiro a ser iniciado quando você inicia o RDS para PostgreSQL. Ele tem as seguintes responsabilidades principais:
+ Bifurcar e monitorar processos em segundo plano
+ Receba solicitações de autenticação dos processos do cliente e autentique-as antes de permitir que o banco de dados atenda às solicitações

## Processos de backend
<a name="PostgreSQL.Tuning.concepts.backend"></a>

Se o postmaster autenticar uma solicitação de cliente, o postmaster bifurcará um novo processo de backend, também chamado de processo postgres. Um processo de cliente conecta-se exatamente a um processo de backend. O processo de cliente e o processo de backend se comunicam diretamente sem a intervenção do processo postmaster.

## Processos em segundo plano
<a name="PostgreSQL.Tuning.concepts.vacuum"></a>

O processo postmaster bifurca vários processos que realizam diferentes tarefas de backend. Alguns dos mais importantes incluem:
+ Gravador WAL

  O RDS para PostgreSQL grava dados no buffer de WAL (gravação antecipada) nos arquivos de log. O princípio do registro em log de gravação antecipada determina que o banco de dados não pode gravar alterações nos arquivos de dados até que o banco de dados grave registros de log descrevendo essas alterações no disco. O mecanismo WAL reduz a E/S do disco e permite que o RDS para PostgreSQL utilize os logs para recuperar o banco de dados após uma falha.
+ Gravador em segundo plano

  Esse processo grava periodicamente páginas sujas (modificadas) dos buffers de memória nos arquivos de dados. Uma página fica suja quando um processo de backend a modifica na memória.
+ Daemon autovacuum

  O daemon consiste no seguinte:
  + O launcher de autovacuum
  + Os processos de operador de autovacuum

  Quando o autovacuum está ativado, ele procura tabelas que tiveram um grande número de tuplas inseridas, atualizadas ou excluídas. Esse daemon tem as seguintes responsabilidades:
  + Recuperar ou reutilizar o espaço em disco ocupado por linhas atualizadas ou excluídas
  + Atualizar estatísticas utilizadas pelo planejador
  + Proteger contra a perda de dados antigos devido à recorrência de IDs de transação

  O recurso e autovacuum automatiza a execução de comandos `VACUUM` e `ANALYZE`. `VACUUM` tem as seguintes variantes: padrão e completo. O vacuum padrão é executado em paralelo com outras operações de banco de dados. `VACUUM FULL` requer um bloqueio exclusivo na tabela em que está trabalhando. Portanto, ele não pode ser executado em paralelo com operações que acessam a mesma tabela. `VACUUM` cria uma quantidade substancial de tráfego de E/S, podendo piorar a performance para outras sessões ativas.