Datenbankabfragen

Hier finden sich Übersetzungen von deutschsprachigen Fehlermeldungen ins englische.

Mit folgendem Befehl lassen sich die derzeit laufenden Postgres Prozesse anzeigen:

ps ax | grep [p]ostgres

Nachfolgend sind nützliche Abfragen auf PostgreSQL-Datenbanken aufgeführt.

Anzahl der Datensätze in allen Tabellen eines Schemas

SELECT
  schemaname,
  relname,n_live_tup 
FROM
  pg_stat_user_tables
WHERE
  schemaname = 'schema_name'
ORDER BY
  n_live_tup DESC;

Speicherverbrauch einer Tabelle ermitteln
Hinweis: Die verbrauchte Speichermenge wächst nur, wenn zusätzliche Datensätze zu einer Tabelle hinzukommen oder bei einem Update ein Datensatz größer als 8192 Byte wird.

SELECT
  pg_size_pretty(
    pg_table_size('mytable')
  );

Wann wurde Autovacuum ausgeführt
Die Abfrage zeigt für jede Tabelle an wann das letzte mal ein vacuum, autovacuum, analyze und autoanalyze ausgeführt wurde.

SELECT
  relname, last_vacuum, last_autovacuum, last_analyze, last_autoanalyze
FROM
  pg_stat_user_tables
ORDER BY
  relname;

Unbeendete Transaktionen
Die Abfrage zeigt wie lange noch offene Transaktionen schon laufen.

SELECT
  procpid, current_timestamp - xact_start AS xact_runtime, current_query
FROM
  pg_stat_activity
ORDER BY
  xact_start;

Alle Views in Schemas Löschen
Erstellt Abfragen zum Löschen aller Views in den angegebenen Schematas.

SELECT
  'DROP VIEW IF EXISTS ' || nspname || '.' || relname || ' CASCADE;'
FROM
  pg_class c JOIN pg_namespace n on n.oid = c.relnamespace
WHERE
  c.relkind = 'v'
  AND n.nspname IN ('dlm25', 'sf', 'verwaltungsgrenzen', 'wbv')
ORDER BY n.nspname