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 数据库实例类。