本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 使用率。该值是通过测试和分析工作负载特征来确定的,这些特征包括数据库的大小、查询的数量和复杂性、并发用户的数量以及可用的系统资源。进行更改后,您的监控系统会检查数据库的性能,以确保新值适合您的工作负载。然后,您可以根据需要微调其他参数以进一步提高性能。