Check IDs

Every check ID with its duty, data requirements, and PG support.

68 checks run in the registry (67 user-facing checks listed below by duty; the dummy pipeline self-test and the disabled benchmark check are omitted) (catalog schema v1, checksum 56d2460cde2d74f80541eabbb09d8081502b235254978d7fd58c606a3749c831):

Availability

  • queries.blocking — Report blocked/blocker pairs from pg_locks + activity.
    • requires: pg_locks
    • severities: info, warning; PG: 13, 14, 15, 16, 17

Index lifecycle

  • index.advisor — Emit ranked index findings with CONCURRENTLY DDL + predicted saving. include_tables/exclude_tables are comma- separated table filters (bare or schema-qualified, case- insensitive) applied to every candidate; wave-1 btree…
    • requires: pg_stats
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • schema.hypopg — Attempt HypoPG verification; unknown/absent label fallback.
    • requires: hypopg, pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.invalid_indexes — Report indisvalid=false leftovers (index-space forensics).
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.missing_indexes — Propose heuristic candidates labeled heuristic-unverified.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.redundant_indexes — Group same-leading-indkey indexes, keep the widest.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.unused_indexes — List idx_scan=0 indexes with DROP CONCURRENTLY text.
    • severities: info; PG: 13, 14, 15, 16, 17

Monitoring

  • autovacuum — Emit per-table autovacuum SET text for large high-churn tables.
    • severities: info; PG: 13, 14, 15, 16, 17
  • backup.archiver — Live archiver-health audit.
    • requires: pg_stat_archiver
    • severities: warning; PG: 13, 14, 15, 16, 17
  • backup.freshness — Live backup-freshness audit (server-observable evidence only).
    • requires: pg_stat_archiver, pg_stat_backup, pg_stat_base_backup
    • severities: info; PG: 13, 14, 15, 16, 17
  • concurrency.idle_txn — Live idle-in-transaction audit (threshold injectable per run).
    • severities: warning; PG: 13, 14, 15, 16, 17
  • concurrency.isolation_notes — Live isolation-level and long-runner audit.
    • severities: info; PG: 13, 14, 15, 16, 17
  • concurrency.lock_waits — Live lock-wait audit.
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • concurrency.serialization — Live deadlock/conflict audit.
    • severities: info; PG: 13, 14, 15, 16, 17
  • config — Audit memory/planner, autovacuum, WAL/checkpoint, logging.
    • severities: info; PG: 13, 14, 15, 16, 17
  • extensions — Discover allowlisted extensions and flag drift/floors.
    • severities: info; PG: 13, 14, 15, 16, 17
  • index-space — Explain per-index space: duplicates, invalid, fillfactor/INCLUDE.
    • severities: info; PG: 13, 14, 15, 16, 17
  • matview — Propose materialized views from repeated heavy agg/join fingerprints.
    • requires: pg_extension, pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • partitioning — Flag large monoliths for RANGE partitioning with lifecycle notes.
    • severities: info; PG: 13, 14, 15, 16, 17
  • pgbouncer — Recommend for/against pgbouncer from live connection signals.
    • requires: pgbouncer
    • severities: info; PG: 13, 14, 15, 16, 17
  • pooler — Read pool pressure signals and recommend for/against pgbouncer.
    • requires: pgbouncer
    • severities: info; PG: 13, 14, 15, 16, 17
  • query.lint.nplus1 — N+1 storm detection over top fingerprints.
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • query.lint.plan — Estimated plan-shape proof over top fingerprints (never ANALYZE).
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • query.lint.runtime — Runtime-fact correlation from pg_stat_statements actuals.
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • query.lint.static — Static anti-pattern lint over top pg_stat_statements fingerprints.
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • routine.dead_code — Live zero-call inventory (degrades when tracking is off).
    • severities: info; PG: 13, 14, 15, 16, 17
  • routine.definer_crossref — Live definer cross-reference (single-ownership pointer).
    • requires: pg_proc
    • severities: info; PG: 13, 14, 15, 16, 17
  • routine.parallel_safety — Live parallel-safety audit.
    • requires: pg_proc
    • severities: info; PG: 13, 14, 15, 16, 17
  • routine.volatility — Live volatility audit (parser-recorded dependencies, stated basis).
    • requires: pg_proc
    • severities: info; PG: 13, 14, 15, 16, 17
  • scale.citus — Live Citus/sharding-readiness audit (degrades without metadata).
    • requires: citus, pg_settings, pg_stat_replication
    • severities: critical, warning; PG: 13, 14, 15, 16, 17
  • scale.durability — Live durability-posture audit.
    • requires: pg_stat_archiver
    • severities: info; PG: 13, 14, 15, 16, 17
  • scale.partitions — Live partition-depth audit.
    • requires: citus, pg_attribute, pg_class, pg_extension, pg_namespace, pg_settings, pg_stat_activity
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • scale.replication — Live replication health, dispatched by primary/standby role.
    • requires: pg_ls_waldir, pg_replication_slots
    • severities: warning; PG: 13, 14, 15, 16, 17
  • scale.slots — Live slot-retention audit.
    • requires: pg_class, pg_database, pg_locks, pg_namespace, pg_settings, pg_stat_user_tables
    • severities: critical, info, warning; PG: 13, 14, 15, 16, 17
  • scale.vacuum_depth — Live freeze-horizon and HOT-update audit.
    • requires: pg_attribute, pg_class, pg_constraint, pg_index, pg_inherits, pg_namespace, pg_partitioned_table, pg_stat_user_tables
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • security — Live user/role/permission audit across catalogs.
    • requires: pg_roles
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.audit_logging — Audit-logging baseline, escalated when criticals exist.
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.auth — MD5 password hashes plus transport/authentication settings.
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.default_privs — Schemas whose granted roles lack ALTER DEFAULT PRIVILEGES cover.
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.definer — SECURITY DEFINER functions without a pinned search_path.
    • requires: pg_proc
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.extensions — Untrusted extensions, stored FDW passwords, stale versions.
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.rls — Tenant-shape row-security audit (RLS off, empty, placebo, no FORCE).
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.stale — Expired, passwordless, and grant-less login roles.
    • severities: info; PG: 13, 14, 15, 16, 17
  • security.version — EOL calendar: past-EOL is critical, near-EOL warns.
    • severities: info; PG: 13, 14, 15, 16, 17
  • storage — Break down growth by component and attribute retained WAL.
    • requires: pg_database_size, pg_ls_waldir
    • severities: info; PG: 13, 14, 15, 16, 17

Query tuning

  • queries.cache_hit — Flag table/index cache-hit ratios below 0.99.
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • queries.cpu — Attribute 100%-CPU causes via wait taxonomy + top CPU.
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • queries.explain — Capture bounded EXPLAIN plans for top slow queries.
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • queries.routines — Attribute routine/trigger CPU and flag VOLATILE filters.
    • requires: pg_stat_statements, pg_stat_user_functions
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • queries.slow — Rank top-N statements by total time.
    • requires: pg_stat_statements
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • queries.temp_wal — Report temp-spill and checkpoint/WAL pressure.
    • requires: pg_stat_bgwriter, pg_stat_checkpointer
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • vector.extension — Discovery plus version floors (read-only).
    • severities: info; PG: 13, 14, 15, 16, 17
  • vector.hnsw — HNSW audit (read-only; skipped without vector).
    • severities: info; PG: 13, 14, 15, 16, 17
  • vector.index_coverage — Index coverage (read-only; skipped without vector).
    • severities: info; PG: 13, 14, 15, 16, 17

Space management

  • columns.waste — Live column analysis with measured-save gating.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.autovacuum — Emit per-table ALTER SET text for churn tables.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.bloat — Flag dead%>20% or >7d-no-vacuum tables.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.design.collation — Live collation-version audit (indexes + database default, PG15+).
    • requires: pg_collation
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • schema.design.indexes — Live index-design audit (observed predicates when available).
    • requires: pg_stat_statements
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.design.keys — Live keys-and-constraints audit over the catalog.
    • requires: pg_attribute, pg_class, pg_namespace, pg_sequences, pg_type
    • severities: critical, warning; PG: 13, 14, 15, 16, 17
  • schema.design.matviews — Live matview population/staleness audit.
    • requires: pg_class, pg_namespace
    • severities: warning; PG: 13, 14, 15, 16, 17
  • schema.design.normalization — Live normalization-signal audit.
    • requires: pg_class, pg_namespace, pg_stat_all_tables
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • schema.design.sequences — Live sequence-headroom audit for integer primary keys.
    • requires: pg_class, pg_collation, pg_collation_actual_version, pg_database, pg_index, pg_namespace, pg_sequences
    • severities: critical; PG: 13, 14, 15, 16, 17
  • schema.design.types — Live datatype review with capped, LIMIT-bounded value sampling.
    • requires: pg_class, pg_namespace, pg_stats
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.design.unlogged — Live unlogged-relation audit.
    • requires: pg_am, pg_attribute, pg_class, pg_constraint, pg_index, pg_namespace, pg_stat_statements, pg_statio_user_tables, pg_stats, pg_type
    • severities: info, warning; PG: 13, 14, 15, 16, 17
  • schema.design.width — Live TOAST-ratio and wide-row audit.
    • severities: info; PG: 13, 14, 15, 16, 17
  • schema.partitioning — Flag >10GB/50M-row monoliths with RANGE key + caveats.
    • severities: info; PG: 13, 14, 15, 16, 17