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

上次更新时间:2020 年 1 月 13 日

Amazon Aurora PostgreSQL 的 shared_buffers 数据库参数的默认值为什么比 Amazon Relational Database Service (Amazon RDS) PostgreSQL 上的默认值高?

解决方法

PostgreSQL 建议为 shared_buffers 使用合理的起始值,即占系统内存的 25%。然而,您可以根据您的工作负载要求更改此值。要为您的工作负载找一个适当的 shared_buffers 值,请参阅资源使用量的 PostgreSQL 文档。

PostgreSQL 在很大程度上依赖于操作系统进行缓存(双缓冲)。因此,分配 40% 以上的 RAM 至 shared_buffers 不太可能比较小的值表现得好。

对于 RDS 数据库实例,数据库参数组的默认值被设置为总内存的 25%。但是对于 Aurora 数据库实例,数据库参数组的默认值被设置为总内存的 75%。这是因为 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 值意味着缓存命中率也较低。因此,您可以看到,由于频繁访问存储,数据库页面的访问延迟提高。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?