Trabalhar com parâmetros na instância de banco de dados do RDS para PostgreSQL - Amazon Relational Database Service

Trabalhar com parâmetros na instância de banco de dados do RDS para PostgreSQL

Em alguns casos, você pode criar uma instância de banco de dados do RDS para PostgreSQL sem especificar um grupo de parâmetros personalizado. Se for o caso, sua instância de banco de dados será criada usando o grupo de parâmetros padrão para a versão do PostgreSQL que você escolher. Por exemplo, suponha que você crie uma instância de banco de dados do RDS para PostgreSQL usando o PostgreSQL 13.3. Nesse caso, a instância de banco de dados é criada usando os valores no grupo de parâmetros para versões do PostgreSQL 13, default.postgres13.

Você também pode criar seus próprios grupos de parâmetros de banco de dados personalizados. Você precisará fazer isso se quiser modificar qualquer configuração da instância de banco de dados do RDS para PostgreSQL de seus valores padrão. Para saber como, consulte Grupos de parâmetros para Amazon RDS.

Você pode rastrear as configurações em sua instância de banco de dados do RDS para PostgreSQL de várias maneiras diferentes. Você pode usar o AWS Management Console, a AWS CLI ou a API do Amazon RDS. Você também pode consultar os valores pg_settings da tabela PostgreSQL da instância, conforme mostrado a seguir.

SELECT name, setting, boot_val, reset_val, unit FROM pg_settings ORDER BY name;

Para saber mais sobre os valores retornados dessa consulta, consulte pg_settings na documentação do PostgreSQL.

Tenha cuidado especial ao alterar as configurações para max_connections e shared_buffers em sua instância de banco de dados do RDS para PostgreSQL. Por exemplo, suponha que você modifique as configurações de max_connections ou shared_buffers e use valores muito altos para sua workload real. Nesse caso, sua instância de banco de dados do RDS para PostgreSQL não será iniciada. Se isso acontecer, você verá o erro a seguir no postgres.log.

2018-09-18 21:13:15 UTC::@:[8097]:FATAL: could not map anonymous shared memory: Cannot allocate memory 2018-09-18 21:13:15 UTC::@:[8097]:HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently 3514134274048 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

No entanto, não é possível alterar nenhum valor das configurações contidas nos grupos de parâmetros de banco de dados padrão do RDS para PostgreSQL. Para alterar as configurações de qualquer parâmetro, primeiro crie um grupo de parâmetros de banco de dados personalizado. Em seguida, altere as configurações nesse grupo personalizado e, em seguida, aplique o grupo de parâmetros personalizado à sua instância de banco de dados do RDS para PostgreSQL. Para saber mais, consulte Grupos de parâmetros para Amazon RDS.

Existem dois tipos de parâmetro no RDS para PostgreSQL.

  • Parâmetros estáticos – Os parâmetros estáticos exigem que a instância de banco de dados do RDS para PostgreSQL seja reinicializada após uma alteração para que o novo valor possa entrar em vigor.

  • Parâmetros dinâmicos – Parâmetros dinâmicos não exigem uma reinicialização após alterar suas configurações.

nota

Se sua instância de banco de dados do RDS para PostgreSQL estiver usando seu próprio grupo de parâmetros de banco de dados personalizado, você poderá alterar os valores de parâmetros dinâmicos na instância de banco de dados em execução. Isso pode ser feito usando o AWS Management Console, a AWS CLI ou a API do Amazon RDS.

Você também poderá alterar valores de parâmetros se tiver os privilégios de segurança necessários para isso usando os comandos ALTER DATABASE, ALTER ROLE e SET.

Lista de parâmetros de instância de banco de dados do RDS para PostgreSQL

A tabela a seguir lista alguns dos parâmetros (mas nem todos) disponíveis em uma instância de banco de dados do RDS para PostgreSQL. Para visualizar todos os parâmetros disponíveis, use o comando describe-db-parameters da AWS CLI. Por exemplo, para obter a lista de todos os parâmetros disponíveis no grupo de parâmetros padrão do RDS para PostgreSQL versão 13, execute o seguinte.

aws rds describe-db-parameters --db-parameter-group-name default.postgres13

Você também pode usar o console. Selecione Parameter groups (Grupos de parâmetros) no menu do Amazon RDS e depois selecione o grupo de parâmetros dentre os disponíveis em sua Região da AWS.

Nome do parâmetro

Apply_Type

Descrição

application_name

Dinâmico Define o nome da aplicação a ser informada em estatísticas e logs.

archive_command

Dinâmico Define o comando shell que será chamado para arquivar um arquivo WAL.

array_nulls

Dinâmico Permite entrada de elementos NULL em arrays.

authentication_timeout

Dinâmico Define o tempo máximo permitido para concluir a autenticação de cliente.

autovacuum

Dinâmico Inicia o subprocesso de autovacuum.

autovacuum_analyze_scale_factor

Dinâmico Número de inserções, atualizações ou exclusões de tuplas anteriores à análise, como uma fração de reltuplas.

autovacuum_analyze_threshold

Dinâmico Número mínimo de inserções, atualizações ou exclusões de tuplas antes da análise.

autovacuum_freeze_max_age

Estático Idade na qual o autovacuum de uma tabela deve ocorrer para evitar a conclusão do ID de transação.

autovacuum_naptime

Dinâmico Tempo de suspensão entre execuções de autovacuum.

autovacuum_max_workers

Estático Define o número máximo de processos de trabalho de autovacuum em execução simultaneamente.

autovacuum_vacuum_cost_delay

Dinâmico Atraso de custo de vacuum, em milissegundos, para autovacuum.

autovacuum_vacuum_cost_limit

Dinâmico Valor do custo de vacuum disponível antes da suspensão, para autovacuum.

autovacuum_vacuum_scale_factor

Dinâmico Número de atualizações ou exclusões de tuplas antes de vacuum, como uma fração de reltuplas.

autovacuum_vacuum_threshold

Dinâmico Número mínimo de atualizações ou exclusões de tuplas antes de vacuum.

backslash_quote

Dinâmico Define-se uma barra invertida (\) é permitida em literais de string.

bgwriter_delay

Dinâmico Tempo de suspensão do gravador em segundo plano entre rodadas.

bgwriter_lru_maxpages

Dinâmico Número máximo do gravador em segundo plano de páginas LRU para descarregamento por rodada.

bgwriter_lru_multiplier

Dinâmico Múltiplo do uso médio do buffer para liberação por rodada.

bytea_output

Dinâmico Define o formato da saída para bytes.

check_function_bodies

Dinâmico Verifica corpos de funções durante CREATE FUNCTION.

checkpoint_completion_target

Dinâmico Tempo gasto descarregando buffers sujos durante verificações, como uma fração do intervalo de verificação.

checkpoint_segments

Dinâmico Define a distância máxima em segmentos de log entre verificações pontos de verificação WAL (write-ahead log)de log WAL automáticos.

checkpoint_timeout

Dinâmico Define o tempo máximo entre verificações WAL automáticas.

checkpoint_warning

Dinâmico Permite avisos se segmentos de verificação forem preenchidos mais frequentemente do que isso.

client_connection_check_interval

Dinâmico Define o intervalo de tempo entre as verificações de desconexão durante a execução de consultas.

client_encoding

Dinâmico Define a codificação do conjunto de caracteres do cliente.

client_min_messages

Dinâmico Define os níveis de mensagem enviados ao cliente.

commit_delay

Dinâmico Define o atraso em microssegundos entre a confirmação da transação e a liberação do WAL no disco.

commit_siblings

Dinâmico Define o mínimo de transações simultâneas abertas antes de realizar commit_delay.

constraint_exclusion

Dinâmico Permite que o planejador use restrições para otimizar consultas.

cpu_index_tuple_cost

Dinâmico Define a estimativa do planejador sobre o custo do processamento de cada entrada de índice durante uma verificação de índice.

cpu_operator_cost

Dinâmico Define a estimativa do planejador sobre o custo do processamento de cada operador ou chamada de função.

cpu_tuple_cost

Dinâmico Define a estimativa do planejador sobre o custo do processamento de cada tupla (linha).

cursor_tuple_fraction

Dinâmico Define a estimativa do planejador sobre a fração de linhas de um cursor que serão recuperadas.

datestyle

Dinâmico Define o formato de exibição de valores de data e hora.

deadlock_timeout

Dinâmico Define o tempo de espera em um bloqueio antes de verificar a existência de um deadlock.

debug_pretty_print

Dinâmico Recua exibições de árvores de análise e plano.

debug_print_parse

Dinâmico Registra a árvore de análise de cada consulta.

debug_print_plan

Dinâmico Registra o plano de execução de cada consulta.

debug_print_rewritten

Dinâmico Registra a árvore de análise regravada de cada consulta.

default_statistics_target

Dinâmico Define o destino de estatísticas padrão.

default_tablespace

Dinâmico Define o espaço de tabela padrão no qual criar tabelas e índices.

default_transaction_deferrable

Dinâmico Define o status padrão postergável de novas transações.

default_transaction_isolation

Dinâmico Define o nível de isolamento de transação de cada nova transação.

default_transaction_read_only

Dinâmico Define o status padrão somente leitura de novas transações.

default_with_oids

Dinâmico Cria tabelas com “Object IDs” (OIDs – IDs de objetos) por padrão.

effective_cache_size

Dinâmico Define a pressuposição do planejador sobre o tamanho do cache de disco.

effective_io_concurrency

Dinâmico Número de solicitações simultâneas que podem ser manipuladas de forma eficiente pelo subsistema de disco.

enable_bitmapscan

Dinâmico Permite o uso do planejador de planos de verificação de bitmap.

enable_hashagg

Dinâmico Permite o uso do planejador de planos de agregação em hash.

enable_hashjoin

Dinâmico Permite o uso do planejador de planos de junção hash.

enable_indexscan

Dinâmico Permite o uso do planejador de planos de verificação de índice.

enable_material

Dinâmico Permite o uso do planejador da materialização.

enable_mergejoin

Dinâmico Permite o uso do planejador de planos de junção de mesclagem.

enable_nestloop

Dinâmico Permite o uso do planejador de planos de junção de loop aninhado.

enable_seqscan

Dinâmico Permite o uso do planejador de planos de verificação sequencial.

enable_sort

Dinâmico Permite o uso do planejador de etapas de classificação explícitas.

enable_tidscan

Dinâmico Permite o uso do planejador de planos de verificação TID.

escape_string_warning

Dinâmico Avisa sobre escapes de barra invertida (\) em literais de string comuns.

extra_float_digits

Dinâmico Define o número de dígitos exibidos para valores de ponto flutuante.

from_collapse_limit

Dinâmico Define o tamanho da lista FROM além do qual subconsultas não são recolhidas.

fsync

Dinâmico Força a sincronização de atualizações no disco.

full_page_writes

Dinâmico Grava páginas cheias no WAL ao serem modificadas pela primeira vez após uma verificação.

geqo

Dinâmico Permite a otimização de consultas genéticas.

geqo_effort

Dinâmico GEQO: esforço é usado para definir o padrão para outros parâmetros GEQO.

geqo_generations

Dinâmico GEQO: número de iterações do algoritmo.

geqo_pool_size

Dinâmico GEQO: número de indivíduos na população.

geqo_seed

Dinâmico GEQO: propagação para seleção de caminho aleatório.

geqo_selection_bias

Dinâmico GEQO: pressão seletiva dentro da população.

geqo_threshold

Dinâmico Define o limite de itens FROM além do qual o GEQO é usado.

gin_fuzzy_search_limit

Dinâmico Define o resultado máximo permitido para pesquisa exata por GIN.

hot_standby_feedback

Dinâmico Determina se um standby a quente envia mensagens de comentários ao standby principal ou upstream.

intervalstyle

Dinâmico Define o formato de exibição para valores de intervalo.

join_collapse_limit

Dinâmico Define o tamanho da lista FROM além do qual constructos JOIN não são nivelados.

lc_messages

Dinâmico Define o idioma em que as mensagens são exibidas.

lc_monetary

Dinâmico Define a localidade para a formatação de valores monetários.

lc_numeric

Dinâmico Define a localidade para a formatação de números.

lc_time

Dinâmico Define a localidade para a formatação de valores de data e hora.

log_autovacuum_min_duration

Dinâmico Define o tempo de execução mínimo acima do qual as ações de autovacuum serão registradas em log.

log_checkpoints

Dinâmico Registra cada verificação.

log_connections

Dinâmico Registra cada conexão bem-sucedida.

log_disconnections

Dinâmico Registra o fim de uma sessão, incluindo a duração.

log_duration

Dinâmico Registra a duração de cada instrução SQL concluída.

log_error_verbosity

Dinâmico Define a verbosidade das mensagens registradas.

log_executor_stats

Dinâmico Grava estatísticas de performance do executor no log do servidor.

log_filename

Dinâmico Define o padrão de nome de arquivo para arquivos de log.

log_file_mode

Dinâmico Define as permissões de arquivos de log. O valor padrão é 0644.

log_hostname

Dinâmico Registra o nome do host nos logs de conexão. A partir do PostgreSQL 12 e versões posteriores, esse parâmetro está “desativado” por padrão. Quando ativada, a conexão usa a pesquisa reversa de DNS para obter o nome do host que é capturado nos logs de conexão. Se você ativar esse parâmetro, deverá monitorar o impacto que ele tem no tempo necessário para estabelecer conexões.

log_line_prefix

Dinâmico Controla informações prefixadas para cada linha de log.

log_lock_waits

Dinâmico Registra esperas de bloqueio longas.

log_min_duration_statement

Dinâmico Define o tempo de execução mínimo acima do qual as instruções serão registradas em log.

log_min_error_statement

Dinâmico Faz com que todas as instruções que geram um erro igual ou acima desse nível sejam registradas.

log_min_messages

Dinâmico Define os níveis de mensagem registrados.

log_parser_stats

Dinâmico Grava estatísticas de performance do analisador no log do servidor.

log_planner_stats

Dinâmico Grava estatísticas de performance do planejador no log do servidor.

log_rotation_age

Dinâmico A rotação automática de arquivos de log ocorrerá depois de N minutos.

log_rotation_size

Dinâmico A rotação automática de arquivos de log ocorrerá depois de N kilobytes.

log_statement

Dinâmico Define o tipo de instruções registradas.

log_statement_stats

Dinâmico Grava estatísticas de performance cumulativas no log do servidor.

log_temp_files

Dinâmico Registra o uso de arquivos temporários maiores do que esse número de kilobytes.

log_timezone

Dinâmico Define o fuso horário a ser usado em mensagens de log.

log_truncate_on_rotation

Dinâmico Trunca os arquivos de log existentes com o mesmo nome durante a alternância do log.

logging_collector

Estático Inicia um subprocesso para capturar a saída stderr e/ou csvlogs em arquivos de log.

maintenance_work_mem

Dinâmico Define a memória máxima a ser usada para operações de manutenção.

max_connections

Estático Define o número máximo de conexões simultâneas.

max_files_per_process

Estático Define o número máximo de arquivos abertos simultaneamente para cada processo do servidor.

max_locks_per_transaction

Estático Define o número máximo de bloqueios por transação.

max_pred_locks_per_transaction

Estático Define o número máximo de bloqueios de predicado por transação.

max_prepared_transactions

Estático Define o número máximo de transações simultaneamente preparadas.

max_stack_depth

Dinâmico Define a profundidade máxima da pilha, em kilobytes.

max_standby_archive_delay

Dinâmico Define o atraso máximo antes de cancelar consultas quando um servidor em standby a quente está processando dados WAL arquivados.

max_standby_streaming_delay

Dinâmico Define o atraso máximo antes de cancelar consultas quando um servidor em standby a quente está processando dados do WAL em stream.
max_wal_size Dinâmico Define o tamanho do WAL (MB) que aciona o ponto de verificação. Para todas as versões após o RDS para PostgreSQL 10, o padrão é pelo menos 1 GB (1.024 MB). Por exemplo, a configuração max_wal_size do RDS para PostgreSQL 14 é 2 GB (2.048 MB). Use o comando SHOW max_wal_size; na instância de banco de dados do RDS para PostgreSQL para ver o valor atual.
min_wal_size Dinâmico Define o tamanho mínimo até o qual diminuir o WAL. Para o PostgreSQL versão 9.6 e anterior, min_wal_size está em unidades de 16 MB. Para o PostgreSQL versão 10 e posterior, min_wal_size está em unidades de 1 MB.

quote_all_identifiers

Dinâmico Adiciona aspas (") a todos os identificadores ao gerar fragmentos SQL.

random_page_cost

Dinâmico Define a estimativa do planejador sobre o custo de uma página de disco não sequencialmente buscada. Esse parâmetro não tem valor, a menos que o gerenciamento do plano de consulta (QPM) esteja ativado. Quando o QPM está ativado, o valor padrão desse parâmetro é 4.
rds.adaptive_autovacuum Dinâmico Ajusta automaticamente os parâmetros de autovacuum sempre que os limites de ID de transação são excedidos.
rds.force_ssl Dinâmico Requer o uso de conexões SSL. O valor padrão é definido como 1 (ligado) para o RDS para PostgreSQL versão 15. Todas as outras versões principais do RDS para PostgreSQL 14 e anteriores têm o valor padrão definido como 0 (desativado).

rds.local_volume_spill_enabled

Estático Permite gravar arquivos de despejo lógico no volume local.

rds.log_retention_period

Dinâmico Define a retenção de logs para que o Amazon RDS exclua os logs do PostgreSQL com mais de n minutos.
rds.rds_superuser_reserved_connections Estático

Define o número de slots de conexão reservados para rds_superusers. Esse parâmetro só está disponível nas versões 15 e posterior. Para ter mais informações, consulte reserved_connections na documentação do PostgreSQL.

rds.restrict_password_commands Estático Restringe quem gerencia senhas para usuários com a função rds_password. Defina esse parâmetro como 1 para habilitar a restrição de senha. O padrão é 0.

search_path

Dinâmico Define a ordem de pesquisa do esquema de nomes que não são qualificados para esquema.

seq_page_cost

Dinâmico Define a estimativa do planejador sobre o custo de uma página de disco sequencialmente buscada.

session_replication_role

Dinâmico Define o comportamento de sessões para disparadores e regras de regravação.

shared_buffers

Estático Define o número de buffers de memória compartilhada usados pelo servidor.

shared_preload_libraries

Estático Lista as bibliotecas compartilhadas a serem pré-carregadas na instância de banco de dados do RDS para PostgreSQL. Os valores compatíveis incluem auto_explain, orafce, pgaudit, pglogical, pg_bigm, pg_cron, pg_hint_plan, pg_prewarm, pg_similarity, pg_stat_statements, pg_tle, pg_transport, plprofiler e plrust.

ssl

Dinâmico Habilita conexões SSL.

sql_inheritance

Dinâmico Faz com que subtabelas sejam incluídas por padrão em vários comandos.

ssl_renegotiation_limit

Dinâmico Define a quantidade de tráfego para envio e recebimento antes da renegociação das chaves de criptografia.

standard_conforming_strings

Dinâmico Faz com que strings ... tratem barras invertidas literalmente.

statement_timeout

Dinâmico Define a duração máxima permitida de qualquer instrução.

synchronize_seqscans

Dinâmico Permite varreduras sequenciais sincronizadas.

synchronous_commit

Dinâmico Define o nível de sincronização de transações atual.

tcp_keepalives_count

Dinâmico Número máximo de retransmissões de keepalives TCP.

tcp_keepalives_idle

Dinâmico Tempo entre a emissão de keepalives TCP.

tcp_keepalives_interval

Dinâmico Tempo entre retransmissões de keepalives TCP.

temp_buffers

Dinâmico Define o número máximo de buffers temporários usado por cada sessão.
temp_file_limit Dinâmico Define o tamanho máximo em KB até o qual os arquivos temporários podem aumentar.

temp_tablespaces

Dinâmico Define os espaços de tabela a serem usados para tabelas temporárias e arquivos de classificação.

timezone

Dinâmico

Define o fuso horário para exibir e interpretar carimbos de data/hora.

A Internet Assigned Numbers Authority (IANA) publica novos fusos horários várias vezes por ano em https://www.iana.org/time-zones. Toda vez que o RDS lança uma nova versão de manutenção secundária do PostgreSQL, ela vem com os dados de fuso horário mais recentes no momento do lançamento. Quando você usa as versões mais recentes do RDS para PostgreSQL, você tem dados de fuso horário recentes do RDS. Para garantir que sua instância de banco de dados tenha dados de fuso horário recentes, recomendamos atualizar para uma versão superior do mecanismo de banco de dados. Não é possível modificar manualmente as tabelas de fuso horário nas instâncias de banco de dados PostgreSQL. O RDS não modifica nem redefine os dados de fuso horário das instâncias de banco de dados em execução. Os novos dados de fuso horário são instalados somente quando você executa uma atualização da versão do mecanismo de banco de dados.

track_activities

Dinâmico Coleta informações sobre a execução de comandos.

track_activity_query_size

Estático Define o tamanho reservado para pg_stat_activity.current_query, em bytes.

track_counts

Dinâmico Coleta estatísticas sobre a atividade do banco de dados.

track_functions

Dinâmico Coleta estatísticas em nível de função sobre a atividade do banco de dados.

track_io_timing

Dinâmico Coleta estatísticas de tempo sobre atividades de E/S do banco de dados.

transaction_deferrable

Dinâmico Indica se uma transação serializável somente de leitura deve ser adiada até que ela possa ser iniciada sem falhas de serialização possíveis.

transaction_isolation

Dinâmico Define o nível atual de isolamento de transações.

transaction_read_only

Dinâmico Define o status somente leitura das transações atuais.

transform_null_equals

Dinâmico Trata expr=NULL como expr IS NULL.

update_process_title

Dinâmico Atualiza o título do processo para mostrar o comando SQL ativo.

vacuum_cost_delay

Dinâmico Atraso de custo de vacuum, em milissegundos.

vacuum_cost_limit

Dinâmico Valor do custo de vacuum disponível antes da suspensão.

vacuum_cost_page_dirty

Dinâmico Custo de vacuum para uma página suja por vacuum.

vacuum_cost_page_hit

Dinâmico Custo de vacuum para uma página encontrada no cache do buffer.

vacuum_cost_page_miss

Dinâmico Custo de vacuum para uma página não encontrada no cache do buffer.

vacuum_defer_cleanup_age

Dinâmico Número de transações pelas quais a limpeza vacuum e hot deve ser adiada, se houver.

vacuum_freeze_min_age

Dinâmico Idade mínima na qual o vacuum deve congelar uma linha de tabela.

vacuum_freeze_table_age

Dinâmico Idade na qual o vacuum deve varrer uma tabela inteira para congelar tuplas.

wal_buffers

Estático Define o número de buffers da página de disco na memória compartilhada para WAL.

wal_writer_delay

Dinâmico Tempo de suspensão do gravador WAL entre liberações do WAL.

work_mem

Dinâmico Define o máximo de memória a ser usado para espaços de trabalho de consulta.

xmlbinary

Dinâmico Define como valores binários devem ser codificados em XML.

xmloption

Dinâmico Define se dados XML em operações de análise e serialização implícitas são considerados documentos ou fragmentos de conteúdo.

O Amazon RDS usa as unidades padrão do PostgreSQL para todos os parâmetros. A tabela a seguir mostra a unidade padrão de cada parâmetro do PostgreSQL.

Nome do parâmetro

Unidade

archive_timeout

s

authentication_timeout

s

autovacuum_naptime

s

autovacuum_vacuum_cost_delay

ms

bgwriter_delay

ms

checkpoint_timeout

s

checkpoint_warning

s

deadlock_timeout

ms

effective_cache_size

8 KB

lock_timeout

ms

log_autovacuum_min_duration

ms

log_min_duration_statement

ms

log_rotation_age

minutos

log_rotation_size

KB

log_temp_files

KB

maintenance_work_mem

KB

max_stack_depth

KB

max_standby_archive_delay

ms

max_standby_streaming_delay

ms

post_auth_delay

s

pre_auth_delay

s

segment_size

8 KB

shared_buffers

8 KB

statement_timeout

ms

ssl_renegotiation_limit

KB

tcp_keepalives_idle

s

tcp_keepalives_interval

s

temp_file_limit

KB

work_mem

KB

temp_buffers

8 KB

vacuum_cost_delay

ms

wal_buffers

8 KB

wal_receiver_timeout

ms

wal_segment_size

B

wal_sender_timeout

ms

wal_writer_delay

ms

wal_receiver_status_interval

s