在 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_connections
和 shared_buffers
的设置时要特别小心。例如,假设您修改 max_connections
或 shared_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
DATABASE
、ALTER ROLE
和 SET
命令更改参数值。
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 区域中的可用参数组中选择参数组。
参数名称 |
应用类型 |
描述 |
---|---|---|
|
动态 | 设置要在统计数据和日志中报告的应用程序名称。 |
|
动态 | 设置将被调用以存档 WAL 文件的 Shell 命令。 |
|
动态 | 允许在阵列中输入 NULL 元素。 |
|
动态 | 设置允许完成客户端身份验证的最长时间。 |
|
动态 | 启动 Autovacuum 子进程。 |
|
动态 | analyze 之前插入、更新或删除元组的次数,以对于 reltuple 的占比计。 |
|
动态 | analyze 之前插入、更新或删除元组的最小次数。 |
|
静态 | 对表进行 Autovacuum 以防事务 ID 重叠的期限。 |
|
动态 | 两次 Autovacuum 运行之间的睡眠时间。 |
|
静态 | 设置同时运行的 Autovacuum 工作者的最大数量。 |
|
动态 | Autovacuum 的真空开销延迟,以毫秒计。 |
|
动态 | Autovacuum 在小睡之前可用的真空开销量。 |
|
动态 | vacuum 之前更新或删除元组的次数,以对于 reltuple 的占比计。 |
|
动态 | vacuum 之前更新或删除元组的最小次数。 |
|
动态 | 设置字符串字面值中是否允许有反斜杠 (\)。 |
|
动态 | 后台写入实例在两轮之间的睡眠时间。 |
|
动态 | 后台写入实例每轮要刷新的最大 LRU 页数。 |
|
动态 | 每轮要释放的平均缓冲区用量的倍数。 |
|
动态 | 设置字节的输出格式。 |
|
动态 | 在 CREATE FUNCTION 期间检查函数体。 |
|
动态 | 在检查点期间刷新脏缓冲区所用的时间,以对于检查点间隔的占比计。 |
|
动态 | 设置日志段中自动预写日志 (WAL) 检查点之间的最大距离。 |
|
动态 | 设置自动 WAL 检查点之间的最长时间。 |
|
动态 | 如果填充检查点段的频率高于此,则启用警告。 |
|
动态 | 设置在运行查询时检查断开连接的时间间隔。 |
|
动态 | 设置客户端的字符集编码。 |
|
动态 | 设置发送到客户端的消息级别。 |
|
动态 | 设置事务提交与将 WAL 刷新到磁盘之间的延迟,以微秒计。 |
|
动态 | 设置执行 commit_delay 之前同时打开的最少事务数。 |
|
动态 | 使计划程序可使用约束优化查询。 |
|
动态 | 设置计划程序对索引扫描期间处理每个索引条目的开销的估算。 |
|
动态 | 设置计划程序对处理每个运算符或函数调用的开销的估算。 |
|
动态 | 设置计划程序对处理每个元组 (行) 的开销的估算。 |
|
动态 | 设置计划程序对光标将检索的行占比的估算。 |
|
动态 | 设置日期和时间值的显示格式。 |
|
动态 | 设置在检查死锁之前等待锁定的时间。 |
|
动态 | 缩进分析树和计划树的显示内容。 |
|
动态 | 记录每个查询的分析树。 |
|
动态 | 记录每个查询的执行计划。 |
|
动态 | 记录每个查询重写的分析树。 |
|
动态 | 设置默认统计数据目标。 |
|
动态 | 设置要从中创建表和索引的默认表空间。 |
|
动态 | 设置新事务的默认可延迟状态。 |
|
动态 | 设置每个新事务的事务隔离级别。 |
|
动态 | 设置新事务的默认只读状态。 |
|
动态 | 默认情况下,使用对象 ID (OID) 创建新表。 |
|
动态 | 设置计划程序对于磁盘缓存大小的假设。 |
|
动态 | 磁盘子系统可有效处理的并行请求数。 |
|
动态 | 使计划程序可使用位图扫描计划。 |
|
动态 | 使计划程序可使用哈希聚合计划。 |
|
动态 | 使计划程序可使用哈希联接计划。 |
|
动态 | 使计划程序可使用索引扫描计划。 |
|
动态 | 使计划程序可使用具体化。 |
|
动态 | 使计划程序可使用合并联接计划。 |
|
动态 | 使计划程序可使用嵌套循环的联接计划。 |
|
动态 | 使计划程序可使用顺序扫描计划。 |
|
动态 | 使计划程序可使用显式排序步骤。 |
|
动态 | 使计划程序可使用 TID 扫描计划。 |
|
动态 | 警告在普通字符串字面值中有反斜杠 (\) 转义符。 |
|
动态 | 设置所显示的浮点值位数。 |
|
动态 | 设置超出其即不折叠子查询的 FROM 列表大小。 |
|
动态 | 强制将更新同步到磁盘。 |
|
动态 | 在检查点后首次修改时向 WAL 写入整页。 |
|
动态 | 启用基因查询优化。 |
|
动态 | GEQO:用于设置其他 GEQO 参数默认值的工作负载。 |
|
动态 | GEQO:算法的迭代次数。 |
|
动态 | GEQO:群体中的个体数。 |
|
动态 | GEQO:随机路径选择的种子。 |
|
动态 | GEQO:群体中的选择性压力。 |
|
动态 | 设置超出其即使用 GEQO 的 FROM 项阈值。 |
|
动态 | 通过允许由 GIN 进行的精确搜索得出的最大结果数。 |
|
动态 | 确定热备用将反馈消息发送到主备用还是上游备用。 |
|
动态 | 设置间隔值的显示格式。 |
|
动态 | 设置超出其即不平展 JOIN 结构的 FROM 列表大小。 |
|
动态 | 设置显示消息的语言。 |
|
动态 | 设置用于使货币金额格式化的区域设置。 |
|
动态 | 设置用于使数字格式化的区域设置。 |
|
动态 | 设置用于使日期和时间值格式化的区域设置。 |
|
动态 | 设置如超出即记录 Autovacuum 操作的最短运行时间。 |
|
动态 | 记录每个检查点。 |
|
动态 | 记录每个成功的连接。 |
|
动态 | 记录会话结束,包括持续时间。 |
|
动态 | 记录每个完成的 SQL 语句的持续时间。 |
|
动态 | 设置记录消息的详细程度。 |
|
动态 | 向服务器日志写入执行者性能统计数据。 |
|
动态 | 设置日志文件的文件名模式。 |
|
动态 | 设置日志文件的文件权限。默认值为 0644。 |
|
动态 | 在连接日志中记录主机名。从 PostgreSQL 12 及更高版本开始,原定设置情况下,此参数为“off”。开启后,连接使用 DNS 反向查找来获取捕获到连接日志的主机名。如果您启用此参数,则应监控它对建立连接所花费时间的影响。 |
|
动态 | 控制每个日志行前缀的信息。 |
|
动态 | 记录长锁定等待次数。 |
|
动态 | 设置如超出即记录语句的最短运行时间。 |
|
动态 | 导致记录所有产生此水平或此水平之上错误的语句。 |
|
动态 | 设置记录的消息级别。 |
|
动态 | 向服务器日志写入分析器性能统计数据。 |
|
动态 | 向服务器日志写入计划程序性能统计数据。 |
|
动态 | 将在 N 分钟后进行日志文件自动轮换。 |
|
动态 | 将在 N KB 后进行日志文件自动轮换。 |
|
动态 | 设置所记录的语句类型。 |
|
动态 | 向服务器日志写入累计性能统计数据。 |
|
动态 | 记录对大于此 KB 数的临时文件的使用情况。 |
|
动态 | 设置要在日志消息中使用的时区。 |
|
动态 | 在日志轮换期间截断同名的现有日志文件。 |
|
静态 | 启动子进程将 stderr 输出和/或 csvlog 捕获到日志文件中。 |
|
动态 | 设置要用于维护操作的最大内存。 |
|
静态 | 设置最大并行连接数。 |
|
静态 | 设置同时为每个服务器进程打开的最大文件数。 |
|
静态 | 设置每个事务的最大锁定数。 |
|
静态 | 设置每个事务的最大谓词锁定数。 |
|
静态 | 设置同时准备的最大事务数。 |
|
动态 | 设置最大堆栈长度,以 KB 计。 |
|
动态 | 设置在有热备用服务器处理已存档的 WAL 数据时取消查询之前的最大延迟。 |
|
动态 | 设置在有热备用服务器处理流式 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 为单位。 |
|
动态 | 在生成 SQL 片段时向所有标识符添加引号 (")。 |
|
动态 | 设置计划程序对非连续提取磁盘页面的开销的估算。除非开启查询计划管理(QPM),否则此参数没有值。开启 QPM 时,此参数的默认值为 4 。 |
rds.adaptive_autovacuum |
动态 | 在超过事务 ID 阈值时自动优化 Autovacuum 参数。 |
rds.force_ssl |
动态 | 要求使用 SSL 连接。对于 RDS for PostgreSQL 版本 15,默认值设为 1(开启)。所有其他 RDS for PostgreSQL 主要版本 14 及更早版本的默认值都设为 0(关闭)。 |
|
静态 | 允许将逻辑溢出文件写入本地卷。 |
|
动态 | 设置日志保留,以便 Amazon RDS 删除超过 n 分钟的 PostgreSQL 日志。 |
rds.rds_superuser_reserved_connections |
静态 | 设置为 rds_superuser 保留的连接插槽数。此参数仅在版本 15 及更高版本中提供。有关更多信息,请参阅 PostgreSQL 文档预留连接 |
rds.restrict_password_commands |
静态 | 将可以管理密码的用户限制为具有 rds_password 角色的用户。将此参数设置为 1 可启用密码限制。默认值为 0。 |
|
动态 | 设置针对非架构限定名称的架构搜索顺序。 |
|
动态 | 设置计划程序对连续提取磁盘页面的开销的估算。 |
|
动态 | 设置触发器和重写规则的会话行为。 |
|
静态 | 设置服务器使用的共享内存缓冲区数。 |
|
静态 | 列出要预加载到 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 连接。 |
|
动态 | 导致在各种命令中默认加入子表。 |
|
动态 | 设置在重新协商加密密钥之前发送和接收的流量。 |
|
动态 | 导致 ... 字符串按字面处理反斜杠。 |
|
动态 | 设置允许任何语句的最长持续时间。 |
|
动态 | 启用同步顺序扫描。 |
|
动态 | 设置当前事务同步级别。 |
|
动态 | 重新传输 TCP 保持连接信号的最大次数。 |
|
动态 | 发出两次 TCP 保持连接信号之间的时间。 |
|
动态 | 两次 TCP 保持连接信号重新传输之间的时间。 |
|
动态 | 设置每个会话使用的临时缓冲区的最大数量。 |
temp_file_limit |
动态 | 设置临时文件可以达到的最大大小,以 KB 为单位。 |
|
动态 | 选择用于临时表和排序文件的表空间。 |
|
动态 | 设置用于显示和解译时间戳的时区。 互联网编号分配机构(IANA)每年多次在 https://www.iana.org/time-zones |
|
动态 | 收集有关运行命令的信息。 |
|
静态 | 设置为 pg_stat_activity.current_query 保留的大小,以字节计。 |
|
动态 | 收集有关数据库活动的统计数据。 |
|
动态 | 收集有关数据库活动的函数级别统计数据。 |
|
动态 | 收集有关数据库活动的时序统计数据。 |
|
动态 | 指示是否将某个只读可序列化事务推迟到启动它不会发生序列化失败时。 |
|
动态 | 设置当前事务隔离级别。 |
|
动态 | 设置当前事务只读状态。 |
|
动态 | 将 expr=NULL 视为 expr IS NULL。 |
|
动态 | 更新进程标题以显示活动的 SQL 命令。 |
|
动态 | 真空开销延迟,以毫秒计。 |
|
动态 | 小睡之前可用的真空开销量。 |
|
动态 | 由真空弄脏的页面的真空开销。 |
|
动态 | 在缓冲区缓存中找到的页面的真空开销。 |
|
动态 | 在缓冲区缓存中未找到的页面的真空开销。 |
|
动态 | 真空和热清理应推迟的事务数 (如果有)。 |
|
动态 | 真空应冻结表格行的最短期限。 |
|
动态 | 真空应扫描整个表以冻结元组的期限。 |
|
静态 | 设置 WAL 的共享内存中的磁盘页面缓冲区数。 |
|
动态 | 两次 WAL 刷新之间的 WAL 写入实例睡眠时间。 |
|
动态 | 设置要用于查询工作区的最大内存。 |
|
动态 | 设置如何将二进制值编码到 XML 中。 |
|
动态 | 设置要将隐式分析和序列化操作中的 XML 数据视为文档还是内容片段。 |
Amazon RDS 对所有参数均使用默认的 PostgreSQL 单位。下表显示每个参数的 PostgreSQL 原定设置单位。
参数名称 |
单位 |
---|---|
| s |
| s |
| s |
| ms |
| ms |
| s |
| s |
| ms |
| 8 KB |
| ms |
| ms |
| ms |
| 分钟 |
| KB |
| KB |
| KB |
| KB |
| ms |
| ms |
| s |
| s |
| 8 KB |
| 8 KB |
| ms |
| KB |
| s |
| s |
| KB |
| KB |
| 8 KB |
| ms |
| 8 KB |
| ms |
| B |
| ms |
| ms |
| s |