Valk comes with battle-tested rules for common PostgreSQL performance issues. Each rule is fully configurable — tune thresholds to match your workload, not the other way around.
Finds queries that consistently take too long. Valk tracks execution times across your workload and flags queries that exceed your acceptable threshold — especially those called frequently.
Catches queries that do too much work for too little return — like scanning millions of rows to return just a handful. These often indicate a missing index or a query that needs rewriting.
Identifies indexes that haven't been used in weeks or months. These waste disk space and slow down every INSERT, UPDATE, and DELETE. Dropping them is often free performance.
Spots tables with too many dead tuples — rows that have been deleted or updated but not yet cleaned up. High dead tuple ratios cause bloat and slow down sequential scans.
Tracks tables that are growing unusually fast — a sign of missing data retention, runaway logging, or a feature that's inserting more than expected.
Finds B-tree indexes on columns with very few distinct values — like booleans or status enums. These indexes are often wasteful and could be replaced with partial indexes or removed entirely.
Every threshold can be overridden at different levels. Higher specificity wins automatically.
Base thresholds that apply to everything by default.
Adjust thresholds for specific rule types across all tables.
Set different thresholds for high-traffic or critical tables.
Fine-tune individual queries that need special treatment.