Postgresql – AWS aurora (postgres) proper value for the shared_buffers parameter

auroraawsconfigurationmemorypostgresql

I think it's fairly well known that a normal PostgreSQL database has a starting value of 25% of system memory for its shared_buffers parameter, but I haven't been able to find anything regarding a proper value for an AWS Aurora instance.

Now I would normally use the community value for this parameter, but the existing system is already using a value of 50% of the available memory, and I'm just not certain that this is a good value.

Of course, for Aurora the shared_buffers parameter is unique for each database in the system, as opposed to normal PostgreSQL where this is cluster-wide.

Hence, my confusion. Can anyone provide guidance in this manner?

Best Answer

Standard PostgreSQL runs on a file system and depends on the file system cache in addition to the PostgreSQL buffer cache. Aurora PostgreSQL runs on top of Aurora Storage, which is not a file system and doesn't have a separate cache on the instance. So, with Aurora PostgreSQL we set the default for shared_buffers to 75% of the total memory on the instance. We recommend you look at your specific workload requirements to determine memory requirements for caching your working set, for managing the connections needed, and for other PostgreSQL memory requirements.

Full Disclosure: I am the Product Manager for Aurora PostgreSQL.

-Kevin Jernigan