shared_buffers - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

shared_buffers

shared_buffers参数控制 PostgreSQL 用于在内存中缓存数据的内存量。将此参数设置为适当的值有助于提高查询性能。

对于 Amazon RDS,的默认值设置shared_buffers{DBInstanceClassMemory/32768}字节,具体取决于数据库实例的可用内存。对于 Aurora{DBInstanceClassMemory/12038,-50003},根据数据库实例的可用内存,默认值设置为。此参数的最佳值取决于多个因素,包括数据库的大小、并发连接数和可用实例内存。

AWS CLI 语法

shared_buffers对于特定的数据库参数组,以下命令会发生变化。此更改适用于使用参数组的所有实例或集群。

# Modify shared_buffers on a DB parameter group aws rds modify-db-parameter-group \ --db-parameter-group-name <parameter_group_name> \ --parameters "ParameterName=shared_buffers,ParameterValue=<new_value>,ApplyMethod=immediate" # Modify shared_buffers on a DB cluster parameter group aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name <parameter_group_name> \ --parameters "ParameterName=shared_buffers,ParameterValue=<new-value>,ApplyMethod=immediate"

类型:静态(应用更改需要重新启动)

默认值:亚马逊 RDS for PostgreSQL 中的{DBInstanceClassMemory/32768}字节,与 Aurora PostgreSQL 兼{DBInstanceClassMemory/12038,-50003}容。在大多数情况下,这个方程大约占系统内存的25%。遵循此指南,参数组中的shared_buffers设置是使用 PostgreSQL 的 8K 缓冲区默认单位而不是字节或千字节来设置的。

shared_buffers参数设置可能会对性能产生重大影响,因此我们建议您对更改进行全面测试,以确保该值适合您的工作负载。

示例

假设你有一个金融服务应用程序在亚马逊 RDS 或 Aurora 上运行 PostgreSQL 数据库。该数据库用于存储客户交易数据。它有大量的表,并且可以由大量服务器上的多个应用程序访问。应用程序遇到查询性能缓慢和 CPU 使用率过高的问题。您确定调整shared_buffers参数可能有助于提高性能。

在 Amazon RDS for PostgreSQL db.r5.xlarge 中,shared_buffers的默认值设置{DBInstanceClassMemory/32768}为可用内存的字节数(例如 3 GB)。要确定合适的值shared_buffers,请运行一系列具有不同值的测试shared_buffers,从可用内存的默认值开始,然后逐渐增加该值。对于每项测试,您都要测量数据库的查询性能和 CPU 使用率。

根据测试结果,您可以确定将的值设置为 8 GB 会shared_buffers使您的工作负载获得最佳的整体查询性能和 CPU 使用率。该值是通过测试和分析工作负载特征来确定的,这些特征包括数据库的大小、查询的数量和复杂性、并发用户的数量以及可用的系统资源。进行更改后,您的监控系统会检查数据库的性能,以确保新值适合您的工作负载。然后,您可以根据需要微调其他参数以进一步提高性能。