改进了 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 |
|
|
|
12.17、13.13、14.10、15.5 及更高版本 |
|
|
|
注意
rds.memory_allocation_guard
参数在 Aurora PostgreSQL 12.17、13.13、14.10、15.5 及更高版本中已弃用。
在数据库集群参数组中设置这些参数的值可以防止查询被取消。有关数据库集群参数组的更多信息,请参阅Amazon Aurora 的参数组。
限制
db.t3 和 db.serverless 实例类不支持此功能。