Optimizing PostgreSQL Performance

Optimizing the performance of PostgreSQL database server, also known as Postgres.

Basically:

In short: Postgres relies on page caching of operating system (Linux). Assign 25% of available memory to Postgres itself and 75% to cache.

An example for Postgres 12:

# DB Version: 12
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 4 GB
# CPUs num: 4
# Connections num: 400
# Data Storage: ssd

max_connections = 400
shared_buffers = 1GB
effective_cache_size = 3GB
maintenance_work_mem = 256MB
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 1310kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 4
max_parallel_workers_per_gather = 2
max_parallel_workers = 4
max_parallel_maintenance_workers = 2