September 24, 2026: PostgreSQL 19 Beta 4 Released!

Dasha 1.8: index recommendations, I/O analysis, schema checks and log insights

Posted on 2026-09-29 by Dasha
Related Open Source

Dasha is an open source performance dashboard for PostgreSQL fleets. It connects to your clusters with a read-only role, shows what the databases are doing right now, and explains what to do about it. Nothing is installed on the database hosts: no agent, and no extension beyond the ones you already have.

One instance serves many clusters and all of their replicas. Most PostgreSQL statistics are per-instance and are not replicated, so Dasha reads every host of a cluster and reasons over the combined picture. An index that looks unused on the primary may be serving the entire read workload on a standby.

New since the last announcement

  • Index recommendations. Dasha reads pg_stat_statements on every host of a cluster and proposes the B-tree indexes that are missing. Each candidate comes with its column order, a ready CREATE INDEX CONCURRENTLY, the statements it covers and their share of execution time. Write counters and partitioned tables (ATTACH PARTITION) are taken into account. A candidate can be backed by auto_explain plans from the log: sequential scans of its table, what they cost and how many rows their filters discarded. A misestimated row count raises a warning to run ANALYZE first.
  • I/O page built on pg_stat_io (PostgreSQL 16+). Server I/O is broken down by backend type, object and context (normal, vacuum, bulkread, bulkwrite), with WAL on PostgreSQL 18. There is a live mode and snapshot history, and cards for shared_buffers efficiency, vacuum cost and bulk operations.
  • Schema checks. 17 checks for structural defects that stay invisible until something breaks, including sequences close to exhaustion, tables without a primary or unique key, forgotten UNLOGGED relations, a public schema anyone can create objects in (CVE-2018-1058), UUIDs stored as varchar, nullable foreign keys, NOT VALID constraints that were never validated and reserved keywords used as names. Each finding has a severity and remediation SQL.
  • Log insights. Log search now works with OpenSearch, Elasticsearch and VictoriaLogs, as well as Yandex Managed PostgreSQL. A time window is grouped into event categories (deadlocks, lock waits, cancellations, checkpoints, autovacuum, temp files, errors) with frequent message templates. auto_explain plans are grouped by statement and plan shape. The plan tree flags sequential scans of large tables, row estimates that are off by orders of magnitude and sorts that spilled to disk. Comparing two windows lists the statements whose plans got worse.
  • Per-database query analysis. The query report and the Top 10 panels switch between the current database and the whole instance.
  • Postgres Pro support. When pg_stat_statements is not available, Dasha reads pgpro_stats, with no configuration needed.
  • Automatic database discovery. Dasha asks the cluster for its database list and keeps it current.

Features

  • Health Score: a composite 0-100 score per instance across eight categories, with prioritized recommendations tied to a specific database. Optionally computed from Prometheus/VictoriaMetrics time series, with a trend and a seasonal baseline.
  • Query analysis: top queries by execution time and WAL, running and blocked queries with wait events, and pg_stat_statements snapshots. Snapshots can be saved to a storage database, shared by URL, and diffed against another snapshot or against live data.
  • Automatic snapshots: a separate daemon captures query and instance-wide lock-contention snapshots on activity spikes or primary/replica role changes. The evidence is there the next morning when someone asks what happened at 03:00.
  • Index analysis: bloat, duplicates, invalid indexes and B-tree on arrays. It also answers "may I drop this index?", accounting for statistics resets, per-host counters and partitioned indexes rather than trusting idx_scan = 0.
  • Tables and maintenance: size with a TOAST breakdown, per-table describe, and autovacuum and wraparound thresholds computed with PostgreSQL's own formula. Also vacuum progress, and hot tables and indexes derived from scheduled delta snapshots.
  • Locks, waits, connections: lock trees, wait events grouped by type, connection states and sources, and active session details.
  • Access control: three auth modes (open, static API keys, or OIDC with encrypted session cookies), Casbin RBAC, personal access tokens and per-identity rate limiting.
  • MCP connector: a read-only MCP server that gives AI assistants the fleet diagnostics. It has 31 tools, including index recommendations, schema checks, I/O, log search and plan regressions. It also has 5 prompts, per-user token passthrough and an embedded knowledge base of the scoring rules.

The interface is available in English, Russian and German.

Requirements

  • PostgreSQL 14 or newer (tested on 14-18) for the monitored clusters, reachable with a role holding pg_monitor and CONNECT on every monitored database.
  • pg_stat_statements (or pgpro_stats on Postgres Pro) for query statistics; pgstattuple is optional.
  • The I/O page requires PostgreSQL 16 or newer.
  • Optional: a log source (OpenSearch, Elasticsearch, VictoriaLogs or Yandex Managed PostgreSQL) for log search and plan insights, with auto_explain enabled for plan analysis.
  • Optional: a separate PostgreSQL database for snapshots, hot-object history and personal access tokens. Everything else works without it.

Documentation