Free PostgreSQL tool
Understand pg_stat_statements counters—without sharing SQL text
Compare cumulative workload, frequency, average execution time, reads, temporary writes, planning, and WAL using transparent rankings. Import CSV, TSV, or JSON locally, or choose an eligible connected database while signed in.
SQL text is not needed
Manual CSV, TSV, and JSON exports stay in this browser. Query-text columns are discarded before analysis and export. An explicit connected run uses your owned encrypted connection server-side and returns only bounded counters without saving the report.
Recommended
Analyze a connected database
Use a verified monitoring connection without copying SQL, exporting a file, or entering credentials again. The one-time report is not saved to monitoring history.
No connection required
Use without connecting
Run a fixed query in your provider console, then analyze the exported counters locally in this browser.
Manual step 1
Export safe query counters
Run this fixed SELECT-only helper and export its result as CSV, TSV, or JSON. It returns database metadata, 500 bounded fingerprints, and counters—never the query column.
Preview query
WITH analyzer_metadata AS (
SELECT
'databasemeter-pgss-v1'::text AS schema_version,
current_database()::text AS database_name,
current_setting('server_version')::text AS postgres_version,
clock_timestamp() AS generated_at,
NULL::timestamp with time zone AS stats_reset
)
SELECT
m.schema_version,
m.database_name,
m.postgres_version,
m.generated_at,
m.stats_reset,
s.queryid::text AS queryid,
s.calls::double precision AS calls,
s.total_plan_time::double precision AS total_plan_time,
s.total_exec_time::double precision AS total_exec_time,
s.mean_plan_time::double precision AS mean_plan_time,
s.mean_exec_time::double precision AS mean_exec_time,
s.rows::double precision AS rows,
s.shared_blks_hit::double precision AS shared_blks_hit,
s.shared_blks_read::double precision AS shared_blks_read,
s.shared_blks_dirtied::double precision AS shared_blks_dirtied,
s.shared_blks_written::double precision AS shared_blks_written,
s.temp_blks_read::double precision AS temp_blks_read,
s.temp_blks_written::double precision AS temp_blks_written,
s.wal_records::double precision AS wal_records,
s.wal_bytes::double precision AS wal_bytes
FROM pg_stat_statements AS s
CROSS JOIN analyzer_metadata AS m
WHERE s.dbid = (SELECT oid FROM pg_catalog.pg_database WHERE datname = current_database())
AND s.queryid IS NOT NULL
ORDER BY s.total_exec_time DESC
LIMIT 500;Query failed in the provider console?
Relation does not exist: try Auto first and confirm the copied query does not reference pg_stat_statements_info. The extension must be enabled in the exact database selected in the provider console.
Permission denied: use a restricted role with statistics access; do not substitute an owner or application credential.
Fastest signed-in recovery: the guided setup prepares and verifies the role and extension access before returning to this analyzer.
Sign in for guided database setupManual step 2
Import the export
The minimum useful fields are queryid, calls, and total_exec_time. Missing optional fields remain unavailable rather than becoming zero.
Definitions and sources
Provider and PostgreSQL statements last reviewed August 29, 2026. Pricing consoles and invoices remain authoritative.
Related database resources
PostgreSQL health check
Analyze bounded PostgreSQL catalog statistics locally—without connecting your database.
Open resourcePostgreSQL database size guide
Use built-in PostgreSQL functions to inspect database and relation sizes.
Open resourcePostgreSQL index size guide
Measure table and index footprint without reading application rows.
Open resource