改进了 Aurora PostgreSQL 中的内存管理 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

改进了 Aurora PostgreSQL 中的内存管理

Aurora PostgreSQL 现在包含高级内存管理功能,这些功能可在各种工作负载下优化数据库性能和弹性。这些改进有助于 Aurora PostgreSQL 保持一致的可用性和响应能力,即使在内存需求高的时期也是如此。

在下列 Aurora PostgreSQL 版本中,该功能可用并默认启用:

  • 15.3 及更高版本

  • 14.8 及更高版本

  • 13.11 及更高版本

  • 12.15 及更高版本

  • 11.20 及更高版本

当客户的工作负载用完所有可用的空闲内存时,操作系统可能会重新启动数据库以保护资源,导致数据库暂时不可用。当系统遇到高内存压力时,Aurora PostgreSQL 中新的内存管理改进功能会主动取消一些事务,来帮助保持数据库的稳定性。

主要的内存管理改进功能如下:

  • 当系统接近临界内存压力时,取消请求更多内存的数据库事务。

  • 当系统耗尽所有物理内存并即将耗尽交换空间时,系统将被认为处于临界内存压力之下。在这些情况下,任何请求内存的事务都将被取消,以立即降低数据库实例中的内存压力。

  • 必不可少的 PostgreSQL 启动器和后台工件(例如 autovacuum 工件)始终受到保护。

处理内存管理参数

开启内存管理

默认情况下,此功能处于启用状态。当由于内存不足而取消事务时,会显示一条错误消息,如以下示例所示:

ERROR: out of memory Detail: Failed on request of size 16777216.
关闭内存管理

要关闭此功能,请使用 psql 连接到 Aurora PostgreSQL 数据库集群,并对参数值使用 SET 语句,如下所述。

注意

建议您保持启用内存管理。这有助于防止潜在的内存不足错误,而这些错误可能由于内存耗尽而导致工作负载引发的数据库重启。

下表显示了如何关闭不同 Aurora PostgreSQL 版本的内存管理功能:

Aurora PostgreSQL 版本 参数 默认值 在会话级别关闭内存管理的命令

11.20、11.21、12.15、12.16、13.11、13.12、14.8、14.9、15.3、15.4

rds.memory_allocation_guard

false

SET rds.memory_allocation_guard = true;

12.17、13.13、14.10、15.5 及更高版本

rds.enable_memory_management

true

SET rds.enable_memory_management = false;

注意

rds.memory_allocation_guard 参数在 Aurora PostgreSQL 12.17、13.13、14.10、15.5 及更高版本中已弃用。

在数据库集群参数组中设置这些参数的值可以防止查询被取消。有关数据库集群参数组的更多信息,请参阅Amazon Aurora 的参数组

限制

  • db.t3 和 db.serverless 实例类不支持此功能。