TimescaleDB tuning tool

To help make configuring TimescaleDB a little easier, you can use the timescaledb-tune tool. This tool handles setting the most common parameters to good values based on your system. It accounts for memory, CPU, and PostgreSQL version. timescaledb-tune is packaged with the TimescaleDB binary releases as a dependency, so if you installed TimescaleDB from a binary release (including Docker), you should already have access to the tool. Alternatively, you can use the go install command to install it:

  1. go install github.com/timescale/timescaledb-tune/cmd/[email protected]

The timescaledb-tune tool reads your system’s postgresql.conf file and offers interactive suggestions for your settings. Here is an example of the tool running:

  1. Using postgresql.conf at this path:
  2. /usr/local/var/postgres/postgresql.conf
  3. Is this correct? [(y)es/(n)o]: y
  4. Writing backup to:
  5. /var/folders/cr/example/T/timescaledb_tune.backup202101071520
  6. shared_preload_libraries needs to be updated
  7. Current:
  8. #shared_preload_libraries = 'timescaledb'
  9. Recommended:
  10. shared_preload_libraries = 'timescaledb'
  11. Is this okay? [(y)es/(n)o]: y
  12. success: shared_preload_libraries will be updated
  13. Tune memory/parallelism/WAL and other settings? [(y)es/(n)o]: y
  14. Recommendations based on 8.00 GB of available memory and 4 CPUs for PostgreSQL 12
  15. Memory settings recommendations
  16. Current:
  17. shared_buffers = 128MB
  18. #effective_cache_size = 4GB
  19. #maintenance_work_mem = 64MB
  20. #work_mem = 4MB
  21. Recommended:
  22. shared_buffers = 2GB
  23. effective_cache_size = 6GB
  24. maintenance_work_mem = 1GB
  25. work_mem = 26214kB
  26. Is this okay? [(y)es/(s)kip/(q)uit]:

When you have answered the questions, the changes are written to your postgresql.conf and take effect when you next restart.

If you are starting on a fresh instance and don’t want to approve each group of changes, you can automatically accept and append the suggestions to the end of your postgresql.conf by using some additional flags when you run the tool:

  1. $ timescaledb-tune --quiet --yes --dry-run >> /path/to/postgresql.conf