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

排查存储问题

如果排序或索引创建操作所需的工作内存量超过 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 实例类。建议仅将 T 数据库实例类用于开发和测试服务器,或其他非生产服务器。有关更多信息,请参阅数据库实例类类型