Aurora PostgreSQL 的 shared_buffers 数据库参数的默认值为什么比 Amazon RDS PostgreSQL 的默认值高?

上次更新日期:2022 年 6 月 27 日

我想了解 Amazon Aurora PostgreSQL 和 Amazon Relational Database Service(Amazon RDS)PostgreSQL 的数据库参数组的默认值之间的差异?

解决方法

PostgreSQL 建议为 shared_buffers 使用合理的起始值,即占系统内存的 25%。当然,您可以根据工作负载的需求更改该值。要确定工作负载所需的适当 shared_buffers 值,请参阅有关资源使用量的 PostgreSQL 文档。

PostgreSQL 高度依靠操作系统来提供缓存(双缓冲)。因此,为 shared_buffers 分配 40% 以上的 RAM 不太可能比较小的值表现更好。

对于 RDS 数据库实例,数据库参数组的默认值设置为总内存的 25%。对于 Aurora 数据库实例,数据库参数组的默认值设置在 50% 到 75% 之间,具体取决于实例类。Aurora 数据库实例的默认值更高,是因为 Aurora PostgreSQL 消除了双缓冲并且不使用文件系统缓存。因此,Aurora PostgreSQL 可以通过增加 shared_buffers 来提高性能。最佳实践是在使用 Aurora PostgreSQL 时为 shared_buffers 数据库参数使用 75% 的默认值。较小的值可能会减少数据页的可用内存,同时增加 Aurora 存储子系统上的 I/O,从而降低性能。有关更多信息,请参阅 Amazon Aurora PostgreSQL 参考

注意:您可能需要为某些工作负载降低 shared_buffers 参数的值。例如,假设工作负载接受高于默认值的大量连接,或者您频繁使用较大的 work_memmaintenance_work_mem 等等,则可能需要使用较小的值。然而,较小的 shared_buffers 值意味着缓存命中率也较低。因此,您可能会看到,由于频繁访问存储,数据库页面的访问延迟增加。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?