在 RDS for PostgreSQL 数据库实例上使用参数 - Amazon Relational Database Service

在 RDS for PostgreSQL 数据库实例上使用参数

在某些情况下,您可以在不指定自定义参数组的情况下创建 RDS for PostgreSQL 数据库实例。如果是这样,您的数据库实例将使用您选择的 PostgreSQL 版本的默认参数组创建。例如,假设您使用 PostgreSQL 13.3 创建 RDS for PostgreSQL 数据库实例。在这种情况下,数据库实例使用 PostgreSQL 13 版本 default.postgres13 的参数组中的值创建。

您还可以创建自己的自定义数据库参数组。如果要从其默认值修改 RDS for PostgreSQL 数据库实例的任何设置,则需要执行此操作。要了解如何操作,请参阅 Amazon RDS 的参数组

您可以通过几种不同的方法跟踪 RDS for PostgreSQL 数据库实例的设置。您可以使用 AWS Management Console、AWS CLI 或 Amazon RDS API。也可以从实例的 PostgreSQL pg_settings 表中查询值,如下所示。

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

要了解此查询所返回值的更多相关信息,请参阅 PostgreSQL 文档中的 pg_settings

更改 RDS for PostgreSQL 数据库实例上的 max_connectionsshared_buffers 的设置时要特别小心。例如,假设您修改 max_connectionsshared_buffers 的设置,并且您使用的值对于实际工作负载来说太高。在这种情况下,RDS for PostgreSQL 数据库实例将无法启动。如果发生这种情况,您会在 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.

但是,您无法更改默认 RDS for PostgreSQL 数据库参数组中包含的任何设置值。要更改任何参数的设置,请首先创建自定义数据库参数组。然后,更改该自定义组中的设置,并将自定义参数组应用到 RDS for PostgreSQL 数据库实例。要了解更多信息,请参阅 Amazon RDS 的参数组

RDS for PostgreSQL 中有两种类型的参数。

  • 静态参数:静态参数需要在更改后重启 RDS for PostgreSQL 数据库实例,以便新值生效。

  • 动态参数:动态参数在更改设置后不需要重启。

注意

如果 RDS for PostgreSQL 数据库实例使用您自己的自定义数据库参数组,则可以更改正在运行的数据库实例上动态参数的值。您可以通过使用 AWS Management Console、AWS CLI 或 Amazon RDS API 实现此目的。

如果您有这样做的权限,则还可使用 ALTER DATABASEALTER ROLESET 命令更改参数值。

RDS for PostgreSQL 数据库实例参数列表

下表列出了 RDS for PostgreSQL 数据库实例中的一些(但并非全部)可用参数。要查看所有可用参数,请使用 AWS CLI 命令 describe-db-parameters。例如,要获取 RDS for PostgreSQL 版本 13 的原定设置参数组中所有可用参数的列表,请运行以下命令。

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

您还可以使用控制台。从 Amazon RDS 菜单中选择 Parameter groups(参数组),然后从您的 AWS 区域中的可用参数组中选择参数组。

参数名称

应用类型

描述

application_name

动态 设置要在统计数据和日志中报告的应用程序名称。

archive_command

动态 设置将被调用以存档 WAL 文件的 Shell 命令。

array_nulls

动态 允许在阵列中输入 NULL 元素。

authentication_timeout

动态 设置允许完成客户端身份验证的最长时间。

autovacuum

动态 启动 Autovacuum 子进程。

autovacuum_analyze_scale_factor

动态 analyze 之前插入、更新或删除元组的次数,以对于 reltuple 的占比计。

autovacuum_analyze_threshold

动态 analyze 之前插入、更新或删除元组的最小次数。

autovacuum_freeze_max_age

静态 对表进行 Autovacuum 以防事务 ID 重叠的期限。

autovacuum_naptime

动态 两次 Autovacuum 运行之间的睡眠时间。

autovacuum_max_workers

静态 设置同时运行的 Autovacuum 工作者的最大数量。

autovacuum_vacuum_cost_delay

动态 Autovacuum 的真空开销延迟,以毫秒计。

autovacuum_vacuum_cost_limit

动态 Autovacuum 在小睡之前可用的真空开销量。

autovacuum_vacuum_scale_factor

动态 vacuum 之前更新或删除元组的次数,以对于 reltuple 的占比计。

autovacuum_vacuum_threshold

动态 vacuum 之前更新或删除元组的最小次数。

backslash_quote

动态 设置字符串字面值中是否允许有反斜杠 (\)。

bgwriter_delay

动态 后台写入实例在两轮之间的睡眠时间。

bgwriter_lru_maxpages

动态 后台写入实例每轮要刷新的最大 LRU 页数。

bgwriter_lru_multiplier

动态 每轮要释放的平均缓冲区用量的倍数。

bytea_output

动态 设置字节的输出格式。

check_function_bodies

动态 在 CREATE FUNCTION 期间检查函数体。

checkpoint_completion_target

动态 在检查点期间刷新脏缓冲区所用的时间,以对于检查点间隔的占比计。

checkpoint_segments

动态 设置日志段中自动预写日志 (WAL) 检查点之间的最大距离。

checkpoint_timeout

动态 设置自动 WAL 检查点之间的最长时间。

checkpoint_warning

动态 如果填充检查点段的频率高于此,则启用警告。

client_connection_check_interval

动态 设置在运行查询时检查断开连接的时间间隔。

client_encoding

动态 设置客户端的字符集编码。

client_min_messages

动态 设置发送到客户端的消息级别。

commit_delay

动态 设置事务提交与将 WAL 刷新到磁盘之间的延迟,以微秒计。

commit_siblings

动态 设置执行 commit_delay 之前同时打开的最少事务数。

constraint_exclusion

动态 使计划程序可使用约束优化查询。

cpu_index_tuple_cost

动态 设置计划程序对索引扫描期间处理每个索引条目的开销的估算。

cpu_operator_cost

动态 设置计划程序对处理每个运算符或函数调用的开销的估算。

cpu_tuple_cost

动态 设置计划程序对处理每个元组 (行) 的开销的估算。

cursor_tuple_fraction

动态 设置计划程序对光标将检索的行占比的估算。

datestyle

动态 设置日期和时间值的显示格式。

deadlock_timeout

动态 设置在检查死锁之前等待锁定的时间。

debug_pretty_print

动态 缩进分析树和计划树的显示内容。

debug_print_parse

动态 记录每个查询的分析树。

debug_print_plan

动态 记录每个查询的执行计划。

debug_print_rewritten

动态 记录每个查询重写的分析树。

default_statistics_target

动态 设置默认统计数据目标。

default_tablespace

动态 设置要从中创建表和索引的默认表空间。

default_transaction_deferrable

动态 设置新事务的默认可延迟状态。

default_transaction_isolation

动态 设置每个新事务的事务隔离级别。

default_transaction_read_only

动态 设置新事务的默认只读状态。

default_with_oids

动态 默认情况下,使用对象 ID (OID) 创建新表。

effective_cache_size

动态 设置计划程序对于磁盘缓存大小的假设。

effective_io_concurrency

动态 磁盘子系统可有效处理的并行请求数。

enable_bitmapscan

动态 使计划程序可使用位图扫描计划。

enable_hashagg

动态 使计划程序可使用哈希聚合计划。

enable_hashjoin

动态 使计划程序可使用哈希联接计划。

enable_indexscan

动态 使计划程序可使用索引扫描计划。

enable_material

动态 使计划程序可使用具体化。

enable_mergejoin

动态 使计划程序可使用合并联接计划。

enable_nestloop

动态 使计划程序可使用嵌套循环的联接计划。

enable_seqscan

动态 使计划程序可使用顺序扫描计划。

enable_sort

动态 使计划程序可使用显式排序步骤。

enable_tidscan

动态 使计划程序可使用 TID 扫描计划。

escape_string_warning

动态 警告在普通字符串字面值中有反斜杠 (\) 转义符。

extra_float_digits

动态 设置所显示的浮点值位数。

from_collapse_limit

动态 设置超出其即不折叠子查询的 FROM 列表大小。

fsync

动态 强制将更新同步到磁盘。

full_page_writes

动态 在检查点后首次修改时向 WAL 写入整页。

geqo

动态 启用基因查询优化。

geqo_effort

动态 GEQO:用于设置其他 GEQO 参数默认值的工作负载。

geqo_generations

动态 GEQO:算法的迭代次数。

geqo_pool_size

动态 GEQO:群体中的个体数。

geqo_seed

动态 GEQO:随机路径选择的种子。

geqo_selection_bias

动态 GEQO:群体中的选择性压力。

geqo_threshold

动态 设置超出其即使用 GEQO 的 FROM 项阈值。

gin_fuzzy_search_limit

动态 通过允许由 GIN 进行的精确搜索得出的最大结果数。

hot_standby_feedback

动态 确定热备用将反馈消息发送到主备用还是上游备用。

intervalstyle

动态 设置间隔值的显示格式。

join_collapse_limit

动态 设置超出其即不平展 JOIN 结构的 FROM 列表大小。

lc_messages

动态 设置显示消息的语言。

lc_monetary

动态 设置用于使货币金额格式化的区域设置。

lc_numeric

动态 设置用于使数字格式化的区域设置。

lc_time

动态 设置用于使日期和时间值格式化的区域设置。

log_autovacuum_min_duration

动态 设置如超出即记录 Autovacuum 操作的最短运行时间。

log_checkpoints

动态 记录每个检查点。

log_connections

动态 记录每个成功的连接。

log_disconnections

动态 记录会话结束,包括持续时间。

log_duration

动态 记录每个完成的 SQL 语句的持续时间。

log_error_verbosity

动态 设置记录消息的详细程度。

log_executor_stats

动态 向服务器日志写入执行者性能统计数据。

log_filename

动态 设置日志文件的文件名模式。

log_file_mode

动态 设置日志文件的文件权限。默认值为 0644。

log_hostname

动态 在连接日志中记录主机名。从 PostgreSQL 12 及更高版本开始,原定设置情况下,此参数为“off”。开启后,连接使用 DNS 反向查找来获取捕获到连接日志的主机名。如果您启用此参数,则应监控它对建立连接所花费时间的影响。

log_line_prefix

动态 控制每个日志行前缀的信息。

log_lock_waits

动态 记录长锁定等待次数。

log_min_duration_statement

动态 设置如超出即记录语句的最短运行时间。

log_min_error_statement

动态 导致记录所有产生此水平或此水平之上错误的语句。

log_min_messages

动态 设置记录的消息级别。

log_parser_stats

动态 向服务器日志写入分析器性能统计数据。

log_planner_stats

动态 向服务器日志写入计划程序性能统计数据。

log_rotation_age

动态 将在 N 分钟后进行日志文件自动轮换。

log_rotation_size

动态 将在 N KB 后进行日志文件自动轮换。

log_statement

动态 设置所记录的语句类型。

log_statement_stats

动态 向服务器日志写入累计性能统计数据。

log_temp_files

动态 记录对大于此 KB 数的临时文件的使用情况。

log_timezone

动态 设置要在日志消息中使用的时区。

log_truncate_on_rotation

动态 在日志轮换期间截断同名的现有日志文件。

logging_collector

静态 启动子进程将 stderr 输出和/或 csvlog 捕获到日志文件中。

maintenance_work_mem

动态 设置要用于维护操作的最大内存。

max_connections

静态 设置最大并行连接数。

max_files_per_process

静态 设置同时为每个服务器进程打开的最大文件数。

max_locks_per_transaction

静态 设置每个事务的最大锁定数。

max_pred_locks_per_transaction

静态 设置每个事务的最大谓词锁定数。

max_prepared_transactions

静态 设置同时准备的最大事务数。

max_stack_depth

动态 设置最大堆栈长度,以 KB 计。

max_standby_archive_delay

动态 设置在有热备用服务器处理已存档的 WAL 数据时取消查询之前的最大延迟。

max_standby_streaming_delay

动态 设置在有热备用服务器处理流式 WAL 数据时取消查询之前的最大延迟。
max_wal_size 动态 设置触发检查点的 WAL 大小(MB)。对于 RDS for PostgreSQL 10 之后的所有版本,默认值至少为 1 GB(1024 MB)。例如,RDS for PostgreSQL 14 的 max_wal_size 设置为 2 GB(2048 MB)。在 RDS for PostgreSQL 数据库实例上使用 SHOW max_wal_size; 命令查看其当前值。
min_wal_size 动态 设置将 WAL 缩小到的最小大小。对于 PostgreSQL 9.6 版及更早版本,min_wal_size 以 16 MB 为单位。对于 PostgreSQL 10 版及更高版本,min_wal_size 以 1 MB 为单位。

quote_all_identifiers

动态 在生成 SQL 片段时向所有标识符添加引号 (")。

random_page_cost

动态 设置计划程序对非连续提取磁盘页面的开销的估算。除非开启查询计划管理(QPM),否则此参数没有值。开启 QPM 时,此参数的默认值为 4
rds.adaptive_autovacuum 动态 在超过事务 ID 阈值时自动优化 Autovacuum 参数。
rds.force_ssl 动态 要求使用 SSL 连接。对于 RDS for PostgreSQL 版本 15,默认值设为 1(开启)。所有其他 RDS for PostgreSQL 主要版本 14 及更早版本的默认值都设为 0(关闭)。

rds.local_volume_spill_enabled

静态 允许将逻辑溢出文件写入本地卷。

rds.log_retention_period

动态 设置日志保留,以便 Amazon RDS 删除超过 n 分钟的 PostgreSQL 日志。
rds.rds_superuser_reserved_connections 静态

设置为 rds_superuser 保留的连接插槽数。此参数仅在版本 15 及更高版本中提供。有关更多信息,请参阅 PostgreSQL 文档预留连接

rds.restrict_password_commands 静态 将可以管理密码的用户限制为具有 rds_password 角色的用户。将此参数设置为 1 可启用密码限制。默认值为 0。

search_path

动态 设置针对非架构限定名称的架构搜索顺序。

seq_page_cost

动态 设置计划程序对连续提取磁盘页面的开销的估算。

session_replication_role

动态 设置触发器和重写规则的会话行为。

shared_buffers

静态 设置服务器使用的共享内存缓冲区数。

shared_preload_libraries

静态 列出要预加载到 RDS for PostgreSQL 数据库实例中的共享库。支持的值包括 auto_explain、orafce、pgaudit、pglogical、pg_bigm、pg_cron、pg_hint_plan、pg_prewarm、pg_similarity、pg_stat_statements、pg_tle、pg_transport、plprofiler 和 plrust。

ssl

动态 启用 SSL 连接。

sql_inheritance

动态 导致在各种命令中默认加入子表。

ssl_renegotiation_limit

动态 设置在重新协商加密密钥之前发送和接收的流量。

standard_conforming_strings

动态 导致 ... 字符串按字面处理反斜杠。

statement_timeout

动态 设置允许任何语句的最长持续时间。

synchronize_seqscans

动态 启用同步顺序扫描。

synchronous_commit

动态 设置当前事务同步级别。

tcp_keepalives_count

动态 重新传输 TCP 保持连接信号的最大次数。

tcp_keepalives_idle

动态 发出两次 TCP 保持连接信号之间的时间。

tcp_keepalives_interval

动态 两次 TCP 保持连接信号重新传输之间的时间。

temp_buffers

动态 设置每个会话使用的临时缓冲区的最大数量。
temp_file_limit 动态 设置临时文件可以达到的最大大小,以 KB 为单位。

temp_tablespaces

动态 选择用于临时表和排序文件的表空间。

timezone

动态

设置用于显示和解译时间戳的时区。

互联网编号分配机构(IANA)每年多次在 https://www.iana.org/time-zones 上发布新的时区。每当 RDS 发布 PostgreSQL 的新次要维护版本时,RDS 都会附带发布时的最新时区数据。当您使用最新的 RDS for PostgreSQL 版本时,您会获得来自 RDS 的最新时区数据。为确保您的数据库实例具有最新的时区数据,我们建议升级到更高的数据库引擎版本。您无法手动修改 PostgreSQL 数据库实例中的时区表。RDS 不会修改或重置正在运行的数据库实例的时区数据。只有在执行数据库引擎版本升级时,才会安装新的时区数据。

track_activities

动态 收集有关运行命令的信息。

track_activity_query_size

静态 设置为 pg_stat_activity.current_query 保留的大小,以字节计。

track_counts

动态 收集有关数据库活动的统计数据。

track_functions

动态 收集有关数据库活动的函数级别统计数据。

track_io_timing

动态 收集有关数据库活动的时序统计数据。

transaction_deferrable

动态 指示是否将某个只读可序列化事务推迟到启动它不会发生序列化失败时。

transaction_isolation

动态 设置当前事务隔离级别。

transaction_read_only

动态 设置当前事务只读状态。

transform_null_equals

动态 将 expr=NULL 视为 expr IS NULL。

update_process_title

动态 更新进程标题以显示活动的 SQL 命令。

vacuum_cost_delay

动态 真空开销延迟,以毫秒计。

vacuum_cost_limit

动态 小睡之前可用的真空开销量。

vacuum_cost_page_dirty

动态 由真空弄脏的页面的真空开销。

vacuum_cost_page_hit

动态 在缓冲区缓存中找到的页面的真空开销。

vacuum_cost_page_miss

动态 在缓冲区缓存中未找到的页面的真空开销。

vacuum_defer_cleanup_age

动态 真空和热清理应推迟的事务数 (如果有)。

vacuum_freeze_min_age

动态 真空应冻结表格行的最短期限。

vacuum_freeze_table_age

动态 真空应扫描整个表以冻结元组的期限。

wal_buffers

静态 设置 WAL 的共享内存中的磁盘页面缓冲区数。

wal_writer_delay

动态 两次 WAL 刷新之间的 WAL 写入实例睡眠时间。

work_mem

动态 设置要用于查询工作区的最大内存。

xmlbinary

动态 设置如何将二进制值编码到 XML 中。

xmloption

动态 设置要将隐式分析和序列化操作中的 XML 数据视为文档还是内容片段。

Amazon RDS 对所有参数均使用默认的 PostgreSQL 单位。下表显示每个参数的 PostgreSQL 原定设置单位。

参数名称

单位

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

分钟

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