Amazon Aurora PostgreSQL 的最佳实践 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Aurora PostgreSQL 的最佳实践

接下来,您可以找到管理 Amazon Aurora PostgreSQL 数据库集群的几个最佳实践。还请务必查看基本维护任务。有关更多信息,请参阅管理 Amazon Aurora PostgreSQL

排查存储问题

如果排序或索引创建操作所需的工作内存量超过 work_mem 参数分配的量,则 Aurora PostgreSQL 将多余的数据写入到临时磁盘文件。写入数据时,Aurora PostgreSQL 使用它用于存储错误和消息日志的相同存储空间,也即本地存储。您的 Aurora PostgreSQL 数据库集群中的每个实例都有一定量的可用本地存储。存储量基于其数据库实例类。要增加本地存储量,您需要修改实例以使用更大的数据库实例类。有关数据库实例类规格,请参阅 适用于 Aurora 的数据库实例类的硬件规格

您可以通过观看 Amazon CloudWatch 的 FreeLocalStorage 指标来监控 Aurora PostgreSQL 数据库集群的本地存储空间。此指标报告 Aurora 数据库集群中的每个数据库实例可用于临时表和日志的存储量。有关更多信息,请参阅使用 Amazon CloudWatch 监控 Amazon Aurora 指标

排序、索引和分组操作在工作内存中开始,但通常必须分载到本地存储。如果您的 Aurora PostgreSQL 数据库集群由于这些类型的操作而耗尽本地存储,则可以通过采取以下操作之一来解决问题。

  • 增加工作内存量。这减少了使用本地存储的需求。原定设置情况下,PostgreSQL 为每个排序、分组和索引操作分配 4MB。要检查 Aurora PostgreSQL 数据库集群的写入器实例的当前工作内存值,请使用 psql 连接到该实例,并运行以下命令。

    postgres=> SHOW work_mem; work_mem ---------- 4MB (1 row)

    可以在排序、分组和其他操作之前增加会话级别的工作内存,如下所示。

    SET work_mem TO '1 GB';

    有关共享内存的更多信息,请参阅 PostgreSQL 文档中的资源消耗量

  • 更改日志保留期,以便将日志存储更短的时间范围。要了解如何操作,请参阅Aurora PostgreSQL 数据库日志文件

对于大于 40TB 的 Aurora PostgreSQL 集数据库群,请勿使用 db.t2、db.t3 或 db.t4g 实例类。有关更多信息,请参阅数据库实例类类型

避免 Aurora PostgreSQL 数据库实例性能降低、自动重启和失效转移

如果您正在运行繁重的工作负载,或峰值工作负载超出为数据库实例分配的资源,则可能会耗尽运行应用程序和 Aurora 数据库的资源。要获取有关数据库实例的指标,例如 CPU 利用率、内存使用率和使用的数据库连接数,您可以参考 Amazon CloudWatch、性能详情和增强型监控所提供的指标。有关监控数据库实例的更多信息,请参阅 监控 Amazon Aurora 集群中的指标

如果您的工作负载耗尽了您正在使用的资源,则数据库实例可能会变慢、重新启动,甚至失效转移到另一个数据库实例。为避免这种情况,请监控您的资源利用率,检查数据库实例上运行的工作负载,并在必要时进行优化。如果优化不能改善实例指标和缓解资源耗尽问题,请考虑在达到数据库实例的限制之前对其进行纵向扩展。有关可用数据库实例类及其规格的更多信息,请参阅 Aurora 数据库实例类