Postgres without a DBA · Part 2 of 3
PostgreSQL tuning tools: calculator, dashboard, or advisor?
Every tuning tool answers one question. Pick the tool whose question matches yours.
The best PostgreSQL tuning tool is the one that answers the question you have. Tools fall into three kinds. A configuration calculator answers what a sane start is for this hardware. A dashboard answers what happened on the server. An advisor answers what to change, how sure it is, and what proves it. Teams without a database administrator need the third answer, and they usually buy the second.
A PostgreSQL tuning advisor reads the server's own statistics and recommends specific setting or index changes, each with its evidence, severity, and confidence. A configuration calculator such as PGTune derives settings from hardware facts only and never sees the workload.
In short
- Calculators such as PGTune and PGConfig turn RAM, CPUs, version, and workload type into a starting configuration. They never see the workload, so a few settings stay guesses.
- Dashboards such as pgwatch, Percona Monitoring and Management, and Datadog Database Monitoring show what happened. A person still reads the graphs and picks the change.
- An advisor states the change, the measurement behind it, and how sure it is. Ask any tool the five evidence questions before you trust it. On self-managed PostgreSQL 18, test Guardioz on your server.
Three kinds of PostgreSQL tuning tools
PostgreSQL tuning tools differ by the question they answer, not by the length of their feature lists. There are three questions. A calculator answers what a sane start is for this hardware. A dashboard answers what happened on the server. An advisor answers what to change, how sure it is, and what proves it.
Each kind has a blind spot. A calculator never sees the workload. A dashboard shows the workload but leaves the decision to a person. An advisor decides only within the checks it has, so it must say which checks those are.
| ID | Kind | Question it answers | Input | Output | Evidence shown | Blind spot | Examples |
|---|---|---|---|---|---|---|---|
| T1 | Calculator | What is a sane start for this hardware? | RAM, CPUs, PostgreSQL version, workload type, storage, connections | A starting configuration as a file or ALTER SYSTEM lines | None. A formula applied to your inputs. | The workload: cache pressure, WAL rate, temporary files | PGTune, PGConfig |
| T2 | Dashboard | What happened on the server? | Statistics views and host metrics, collected over time | Graphs, history, and alerts | The raw metrics | The decision. A person reads the graphs and picks the change. | pgwatch, Percona Monitoring and Management, Datadog Database Monitoring, Amazon RDS Database Insights |
| T3 | Advisor | What do I change, how sure are you, and what proves it? | The server's own statistics, settings, catalogs, and machine facts | A specific change with severity, confidence, and the statement to run | The measurement behind each change | Whatever its checks do not cover. A good advisor lists that. | pganalyze advisors, Percona Advisors, Postgres.AI check, DBtune, Postgres MCP Pro, Guardioz |
One product can sit in two columns. Percona Monitoring and Management is a dashboard and also ships advisors. Datadog Database Monitoring adds a Recommendations page to its query views. Judge the feature you will use, not the logo.
Calculators: PGTune and PGConfig
A configuration calculator gives a sane first configuration and nothing more. It is the right tool on the first day of a new server, before there is any workload to measure.
PGTune describes itself as a tool to “calculate configuration for PostgreSQL based on the maximum performance for a given hardware configuration.” It asks for the PostgreSQL version, the operating system, the type of application, total memory, the number of CPUs, the number of connections, the type of storage, and the data size relative to RAM. Its version list runs from 10 to 19, so it accepts PostgreSQL 18. The README on GitHub sums it up as “Tuning PostgreSQL config by your hardware.”
PGConfig “recommends PostgreSQL configuration values from the facts about a server”: memory, CPUs, version, workload, and storage. It writes the result as a postgresql.conf fragment, ALTER SYSTEM statements, StackGres, or JSON. It runs as a web app, a command-line tool, a REST API, and an MCP endpoint, and through MCP each value comes with the reason for it.
The PostgreSQL documentation itself contains calculator-style advice. For shared_buffers it says that on a dedicated server with 1 GB or more of RAM, “a reasonable starting value for shared_buffers is 25% of the memory in your system,” and that more than 40% of RAM is unlikely to work better. That is a start, written for every server at once. Source: PostgreSQL 18, resource consumption.
What a calculator cannot know
The settings that matter most depend on measurements that no input form asks for. The table lists what an advisor reads for three of them. The middle column comes from the Guardioz checks reference, which publishes the inputs of every settings check. The right column comes from the PostgreSQL 18 documentation.
| ID | Setting | What it depends on, measured on the server | What the PostgreSQL docs say |
|---|---|---|---|
| C1 | shared_buffers | How much data the server pushes out of its cache to make room for new reads, and the total size of the databases | The PostgreSQL docs give 25% of RAM as a reasonable starting value on a dedicated server with 1 GB or more of RAM, and say more than 40% is unlikely to work better |
| C2 | work_mem | The temporary files that queries write to disk, the connection limit, and the current shared_buffers | One query can run several sort and hash operations at once, and several sessions can run them together, so total use can be many times work_mem |
| C3 | max_wal_size | How much WAL the server generates, how often a checkpoint was requested instead of started by the schedule, and the free space on the data disk | The default is 1 GB and it is a soft limit. PostgreSQL logs a warning when WAL-filling checkpoints come closer together than checkpoint_warning, 30 seconds by default |
Take max_wal_size. Its right value depends on how fast the server writes WAL and how often a checkpoint starts because WAL filled up instead of because the timer ran out. A form with RAM and CPU count cannot hold that number. Guardioz explains the setting in depth in max_wal_size, explained.
Use a calculator once. Then measure the server and move to a tool that reads what it measures.
Dashboards: pgwatch, Percona PMM, Datadog, cloud insights
A dashboard answers what happened. It records metrics over time and draws them. It does not choose the change. A person who knows which graph matters still has to read it, and on a team without a DBA that person is missing.
- pgwatch, by Cybertec, calls itself “a scalable and flexible PostgreSQL-specific monitoring solution.” It collects metrics on query performance, index usage, disk I/O, CPU and memory, and locks and waits, plus custom SQL metrics. It stores them in a sink such as PostgreSQL, TimescaleDB, Prometheus, or JSON files, and shows them in Grafana dashboards.
- Percona Monitoring and Management is, in Percona's words, “an open source database observability, monitoring, and management tool” for MySQL, PostgreSQL, MongoDB, and the servers they run on. For PostgreSQL it captures connections, tuples, tuple activity, and vacuum monitoring, with deeper query insight through
pg_stat_monitor. - Datadog Database Monitoring provides “deep visibility into databases across all of your hosts” with query metrics for normalized queries, query samples, and explain plans. Its Recommendations page “highlights problems and optimization opportunities.”
- Amazon RDS Database Insights is the managed-service view on RDS. AWS says RDS enables it by default in Advanced mode, “which includes lock diagnostics, execution plan capture, and fleet-level monitoring.”
Dashboards are the right tool when the team wants history, alerting, and query-level views. Most of them center on queries. When the problem is a slow query, that is exactly what you need.
Advisors: what they read and what they output
An advisor names the change and shows the evidence for it. Advisors differ in what they read, how much they cover, and whether they act on their own. The table describes each one in the words of its own documentation, checked on November 4, 2026.
| ID | Tool | What it reads | What it outputs |
|---|---|---|---|
| A1 | pganalyze Index Advisor | The query workload collected through pg_stat_statements, schema definitions and sizes, and I/O estimates from the PostgreSQL cost model | Missing and unused index recommendations, and index consolidation in preview. pganalyze states that results require a human review by a database operator. |
| A2 | pganalyze VACUUM Advisor | Each table's statistics, combined with the PostgreSQL logs | Recommendations on table bloat, transaction ID wraparound, and the xmin horizon, with notifications that can go to Slack |
| A3 | Percona Advisors in PMM | Checks that scan MySQL, MongoDB, and PostgreSQL databases for security, configuration, and performance issues | Advisors that, in Percona's words, flag what needs attention and tell you how to fix it |
| A4 | Postgres.AI free health check | A connection with read-only access and standard Postgres credentials, no agent. More than 40 checks across bloat, index hygiene, query performance, configuration, autovacuum, and observability | A health score, issues grouped by severity, and a one-click fix or the exact SQL for each issue. The page lists RDS, Cloud SQL, Azure, Supabase, self-managed, and Kubernetes. |
| A5 | DBtune | PostgreSQL workload and resource usage. It tests server parameter configurations against the workload and machine type, within the parameters you allow. | The best-performing settings, applied automatically or after your approval, plus index recommendations and autovacuum monitoring |
| A6 | Postgres MCP Pro | The database, through an open source Model Context Protocol server: index health, connection use, buffer cache, vacuum health, sequence limits, replication lag, and EXPLAIN plans | Answers to an AI agent. The README says it complements generative AI with deterministic tools and classical optimization algorithms. |
| A7 | Azure Database for PostgreSQL intelligent tuning | The volume and patterns of write operations on a flexible server | Automatic changes to four parameters: bgwriter_delay, checkpoint_completion_target, max_wal_size, and min_wal_size, within specific ranges. Its autovacuum tuning is deprecated in favor of adaptive autovacuum. |
| A8 | Guardioz | Settings, system catalogs, statistics views, and machine facts from a self-managed PostgreSQL 18 server, about once an hour | Findings with severity, the measured data behind workload-sized values, a confidence percentage, and a statement to copy with a restart flag. You run every statement. |
Three patterns stand out. Query advisors such as the pganalyze Index Advisor read pg_stat_statements and focus on indexes. Automatic tuners such as DBtune and Azure intelligent tuning change parameters themselves. Recommendation-only advisors such as Guardioz hand you the statement and leave the change to you.
If you are looking for OtterTune, its own site now reads “OtterTune is Dead (2020-2024)” and describes it as “a database tuning service start-up out of Carnegie Mellon University.”
The evidence test: five questions for any tuning tool
Ask any PostgreSQL tuning tool five questions before you trust a single recommendation. They work for calculators, dashboards, advisors, and AI assistants alike.
- E1Does it show the measurement behind each recommendation? A recommended value with no evidence is a calculator result with a nicer screen. Ask to see the counter or the size that produced it.
- E2Does it say how sure it is? Confidence should rise as the tool measures more of your workload. Guardioz, for example, gives a confidence percentage that starts low after the install and rises as history accumulates.
- E3Does it say when to leave a setting alone? A tool that never says “leave it” gives you no way to tell a measured value from a rule of thumb. A good advisor lists the checks that passed, so you can see what it verified. The Guardioz post max_wal_size, explained covers when to leave that setting alone.
- E4Does it flag restarts and disk limits? Some settings take effect only after a restart. The PostgreSQL docs state that
shared_buffers“can only be set at server start.” A largermax_wal_sizeneeds free disk. The advisor should say both before you run anything. - E5Does it list what it does not check? Every tool has a boundary. A tool that does not publish it leaves you to assume coverage you do not have.
The same five questions apply when you ask ChatGPT or Claude to tune postgresql.conf. Part 3 shows what an assistant cannot see from a prompt.
Which PostgreSQL tuning tool fits your setup
Match the tool to your setup and to the question you have today. Most teams need two kinds over the life of a server: a calculator on the first day, then a dashboard or an advisor.
| ID | Your setup | Start with | Why |
|---|---|---|---|
| W1 | A new self-managed server with no workload yet | A calculator such as PGTune or PGConfig for the first configuration. Measure after the first real traffic. | There is nothing to measure yet. A formula is the only input you have. |
| W2 | Self-managed PostgreSQL 18, no DBA, and you need to know what to change | An advisor that reads the server, such as Guardioz. Run the ten checks from Part 1 by hand once if you want to see the inputs. | You need the change and its evidence, not another graph. |
| W3 | One slow query or a slow endpoint | A query-level tool built on pg_stat_statements, such as pganalyze or Datadog Database Monitoring | The problem lives in the query plan. Guardioz does not analyze queries today. |
| W4 | Amazon RDS or Azure Database for PostgreSQL | The provider's own tools first: Amazon RDS Database Insights, or intelligent tuning on Azure flexible server | Managed services expose their own telemetry and controls. Guardioz does not support them. |
| W5 | A team that already runs Grafana and wants history | A dashboard such as pgwatch or Percona Monitoring and Management | History and alerting are the job. Decisions stay with the team. |
| W6 | An AI agent that should inspect the database | An MCP server such as Postgres MCP Pro, with a read-only role. Read Part 3 first. | The agent needs measured facts, not the prompt alone. |
Where Guardioz fits, and where it does not
Guardioz is an advisor for self-managed PostgreSQL 18. It fits teams that run PostgreSQL themselves and have no database administrator. The scope below comes from the Guardioz documentation, checked on November 4, 2026.
What it does
- An agent runs on the database server, connects over the local Unix socket, and reads settings, system catalogs, and statistics views with a role that has
pg_monitor. Its sessions are read-only. It never reads the rows of your tables. Source: Requirements. - It collects about once an hour, sends the data out over HTTPS, and opens no inbound port.
- It runs ten check groups: reliability settings, autovacuum, monitoring visibility, eight performance settings, invalid indexes, duplicate indexes, tables behind on cleanup, replication slots, transaction log archiving, and open transactions. Part 1 walks through all ten in the order they can hurt you.
- Each settings finding gives the current value, the recommended value, and an
ALTER SYSTEM SETstatement followed bySELECT pg_reload_conf();. Forshared_buffers,work_mem, andmax_wal_sizeit shows the measured data behind the value. When the data disk has no safe room for a largermax_wal_size, it says to add disk space first and gives no statement.
What it does not do
- It changes nothing on your server. You run every statement.
- It is not real-time monitoring and not an uptime monitor. It draws no second-by-second graphs.
- It does not analyze slow queries or query plans today. Query analysis is planned.
- It does not support managed services such as Amazon RDS or Azure Database for PostgreSQL, PostgreSQL run by a Kubernetes operator, replicas, or versions other than PostgreSQL 18.
- It does not check transaction ID wraparound, locks, unused or missing indexes, bloat, or whether a backup can be restored. The full list is on the checks page.
Guardioz is in beta, early, and without an SLA. The Free plan covers one user and up to three servers, with no card.
Test Guardioz on your server
Guardioz answers the advisor question on a running server: what to change, how sure it is, and which measurement proves it.
It fits today if you run PostgreSQL 18 yourself, on Linux with systemd or on FreeBSD, and point it at a primary server.
- Book 30 minutes with Dr. Kot to try it on one of your servers.
- Write to the Guardioz team, led by Alicja Kucharczyk, at contact@guardioz.com.
- Start free: one user, up to three servers, no card. Or open the live demo without signing up.
On an older PostgreSQL or a managed service such as Amazon RDS or Azure Database for PostgreSQL? Guardioz does not support it yet. Write to contact@guardioz.com with your version and platform.
Key facts at a glance
Values and identifiers from each tool's own page, the PostgreSQL 18 documentation, and the Guardioz documentation, checked on November 4, 2026.
| ID | Fact | Value | Source |
|---|---|---|---|
| K1 | PGTune inputs | PostgreSQL version, OS type, DB type, total memory, number of CPUs, number of connections, data storage, total data size | PGTune |
| K2 | shared_buffers starting value | 25% of RAM on a dedicated server with 1 GB or more. More than 40% is unlikely to work better. | PostgreSQL 18 docs |
| K3 | work_mem default | 4 MB per sort or hash operation. Total use can be many times the value. | PostgreSQL 18 docs |
| K4 | max_wal_size default | 1 GB, a soft limit | PostgreSQL 18 docs |
| K5 | checkpoint_warning default | 30 seconds | PostgreSQL 18 docs |
| K6 | pg_stat_statements setup | Listed in shared_preload_libraries. Adding or removing it needs a restart. | PostgreSQL 18 docs |
| K7 | Azure intelligent tuning parameters | bgwriter_delay, checkpoint_completion_target, max_wal_size, min_wal_size | Microsoft Learn |
| K8 | pganalyze index recommendations | Built from the pg_stat_statements workload. Results require a human review. | pganalyze docs |
| K9 | OtterTune | Its site reads “OtterTune is Dead (2020-2024).” | ottertune.com |
| K10 | Guardioz scope | PostgreSQL 18 on a server you run yourself, Linux with systemd or FreeBSD, primaries only, a collection about once an hour, ten check groups | Requirements, checks |
| K11 | Guardioz Free plan | $0 for one user, up to three servers, no card | Pricing |
Frequently asked questions
What is the best PostgreSQL tuning tool?
The best tool is the one that answers your question. For a new server with no workload, a calculator such as PGTune gives a sane start. For history and graphs, a dashboard such as pgwatch or Percona Monitoring and Management fits. For what to change on a running server, use an advisor that shows the measurement behind each change. Test any tool with five questions: does it show the evidence, say how sure it is, say when to leave a setting alone, flag restarts, and list what it does not check.
Is PGTune accurate for PostgreSQL 18?
PGTune accepts PostgreSQL 18 as an input and computes settings from hardware facts: memory, CPUs, connections, storage, and workload type. The formula is not the problem. PGTune never sees your workload, so settings that depend on it, such as max_wal_size and work_mem, stay a starting point until you measure the server.
What replaced OtterTune?
OtterTune's own site says the company is dead and gives its years as 2020 to 2024. No single product replaced it. DBtune tests PostgreSQL parameter configurations against the workload and can apply the best one. Azure Database for PostgreSQL flexible server tunes four write parameters on its own. Advisors such as Guardioz recommend changes that you apply yourself.
Are there free PostgreSQL tuning tools?
Yes. PGTune and PGConfig are web calculators with public source code on GitHub. Percona describes Percona Monitoring and Management as open source. Postgres.AI offers a free health check. Guardioz has a Free plan for one user and up to three servers, with no card required.
Can a PostgreSQL tuning tool apply changes automatically?
Some can. DBtune can apply the best-performing settings automatically or after your approval. Intelligent tuning in Azure Database for PostgreSQL flexible server adjusts bgwriter_delay, checkpoint_completion_target, max_wal_size, and min_wal_size by itself. pganalyze states that its index recommendations require a human review by a database operator. Guardioz changes nothing on your server. You run every statement.
Do I need pg_stat_statements to tune PostgreSQL?
You need it for query tuning. Query-level tools such as the pganalyze Index Advisor read the query workload from pg_stat_statements. The module must be listed in shared_preload_libraries, so adding it needs a server restart. Settings, index health, and cleanup checks do not need it. Guardioz does not read pg_stat_statements.
What is the difference between PostgreSQL monitoring and tuning?
Monitoring records what happened on the server. Tuning decides what to change. A monitoring tool becomes a tuning tool only when it names the change, shows the measurement behind it, and says how sure it is.
Does Guardioz support Amazon RDS or Azure Database for PostgreSQL?
No. Guardioz supports PostgreSQL 18 on a server that you run yourself, on Linux with systemd or on FreeBSD, and it checks primary servers only. Managed services such as Amazon RDS and Azure Database for PostgreSQL, and PostgreSQL run by a Kubernetes operator, are not supported. Write to contact@guardioz.com with your version and platform.
Sources
Tool pages, checked on November 4, 2026.
- PGTune
- PGTune on GitHub
- PGConfig on GitHub
- pgwatch documentation
- pgwatch on GitHub
- Percona Monitoring and Management
- Datadog Database Monitoring
- Amazon RDS: Overview of Database Insights
- pganalyze Indexing Engine
- pganalyze VACUUM Advisor
- Postgres.AI free Postgres health check
- DBtune
- Postgres MCP Pro on GitHub
- Microsoft Learn: Intelligent tuning in Azure Database for PostgreSQL flexible server
- OtterTune
PostgreSQL 18 documentation, checked on November 4, 2026.
- Resource consumption: shared_buffers, work_mem
- Write-ahead log: max_wal_size, checkpoint_warning
- pg_stat_statements
Guardioz, checked on November 4, 2026.