Postgres Tuning For Developers

Revision as of 18:49, 11 July 2019 by Tim Hunt 3 (talk | contribs) (Changes)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

These are instructions for tuning a default Postgres 9.1.7 install on Ubuntu (12.04) with 16GB of RAM.

These instructions are intended for development machines only - not production environments.

These are based on recommendations from here:

First - results:

Before changes - unit tests on master took ~ 09:00

After changes - unit tests on master took 05:48


Change Setting in postgresql.conf. (The path will depend on your system, e.g. Linux: /etc/postgresql/9.1/main/postgresql.conf Mac: /Library/PostgreSQL/9.3/data/postgresql.conf)

shared_buffers = 512MB # Recommended 1/4 of RAM - I'm leaving this lower on a dev machine (still up from 24MB)

effective_cache_size = 8GB # Recommended 1/2 of RAM
checkpoint_segments = 20 # Recommended minimum -- Don't do this in Postgres 11. This setting no longer exists.
checkpoint_completion_target = 0.9 # Up from 0.5
work_mem = 20MB # Used for in memory sorts
synchronous_commit = off # Fine only for dev machines

Append File: /etc/sysctl.conf

# Postgres tuning


Don't bother with a RAM disk

  • sam and Tim have tested using a RAM disk for phpunit runs on Windows and found no improvement once these settings are in place (even when main drive is an HD not an SSD).
  • Eloy also did some testing without significant improvements.
  • NOTE: This is not true of MySQL, where significant gains can be seen.