Schritt 6: Abfragen der Systemtabellen - Amazon Redshift

Schritt 6: Abfragen der Systemtabellen

Zusätzlich zu den von Ihnen erstellten Tabellen enthält Ihre Datenbank eine Reihe von Systemtabellen. Diese Systemtabellen enthalten Informationen zu Ihrer Installation sowie über die verschiedenen Abfragen und Prozesse, die auf dem System ausgeführt werden. Sie können diese Systemtabellen abfragen, um Informationen zu Ihrer Datenbank zu erhalten.

Anmerkung

Die Beschreibung für jede Tabelle in dieser Dokumentation gibt an, ob die Tabelle für alle Benutzer oder nur für Superuser sichtbar ist. Um nur für Superuser sichtbare Tabellen anzuzeigen, melden Sie sich als Superuser an.

Amazon Redshift bietet den Zugriff auf die folgenden Arten von Systemtabellen:

  • STL-Tabellen

    Diese Tabellen werden aus Amazon-Redshift-Protokolldateien erstellt, um einen Systemverlauf zu präsentieren. Protokollierungstabellen haben das Präfix STL.

  • STV-Tabellen

    Diese Tabellen sind eigentlich virtuelle Systemtabellen, die Snapshots der aktuellen Systemdaten enthalten. Snapshot-Tabellen haben das Präfix STV.

  • Systemansichten

    Systemansichten enthalten eine Teilmenge der Daten aus verschiedenen STL- und STV-Systemtabellen. Systemansichten haben das Präfix SVV oder SVL.

  • Systemkatalogtabellen

    Die Systemkatalogtabellen speichern Schema-Metadaten, wie etwa Informationen zu Tabellen und Spalten. Systemkatalogtabellen haben das Präfix PG.

Sie müssen möglicherweise die zu einer Abfrage gehörende Prozess-ID angeben, um Systemtabelleninformationen zu einer Abfrage abzurufen. Weitere Informationen finden Sie unter Bestimmen der Prozess-ID einer laufenden Abfrage.

Anzeigen einer Liste von Tabellennamen

Um eine Liste aller Tabellen in einem Schema anzuzeigen, können Sie die Systemkatalogtabelle PG_TABLE_DEF abfragen. Sie können zunächst die Einstellung für prüfen search_path.

SHOW search_path;

Das Ergebnis sollte in etwa wie folgt aussehen.

search_path --------------- $user, public (1 row)

Im folgenden Beispiel wird dasSALES-Schema dem Suchpfad hinzugefügt und es werden alle Tabellen im SALES-Schema angezeigt.

set search_path to '$user', 'public', 'sales'; SHOW search_path; search_path ------------------------ "$user", public, sales (1 row) select * from pg_table_def where schemaname = 'sales'; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+----------+------------------------+----------+---------+---------+--------- sales | demo | personid | integer | az64 | f | 0 | f sales | demo | city | character varying(255) | lzo | f | 0 | f (2 rows)

Im folgenden Beispiel wird eine Liste aller Tabellen mit dem Namen DEMO in allen Schemata der aktuellen Datenbank angezeigt.

select * from pg_table_def where tablename = 'demo'; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+----------+------------------------+----------+---------+---------+--------- public | demo | personid | integer | az64 | f | 0 | f public | demo | city | character varying(255) | lzo | f | 0 | f sales | demo | personid | integer | az64 | f | 0 | f sales | demo | city | character varying(255) | lzo | f | 0 | f (4 rows)

Weitere Informationen finden Sie in der Tabelle PG_TABLE_DEF.

Sie können auch den Amazon-Redshift-Abfrage-Editor verwenden, um alle Tabellen in einem angegebenen Schema anzuzeigen, indem Sie zuerst eine Datenbank auswählen, mit der Sie eine Verbindung herstellen möchten.

Anzeigen von Benutzern

Sie können den Katalog PG_USER abfragen, um eine Liste aller Benutzer zusammen mit Benutzer-ID (USESYSID) und Benutzerberechtigungen anzuzeigen.

SELECT * FROM pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+----------+----------+----------- rdsdb | 1 | true | true | true | ******** | infinity | awsuser | 100 | true | true | false | ******** | | guest | 104 | true | false | false | ******** | | (3 rows)

Der Benutzername rdsdb wird intern von Amazon Redshift für Routine-Verwaltungs- und Wartungsaufgaben verwendet. Sie können Ihre Abfrage so filtern, dass nur benutzerdefinierte Benutzernamen angezeigt werden, indem Sie Ihrer SELECT-Anweisung where usesysid > 1 hinzufügen.

SELECT * FROM pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+----------+----------+----------- awsuser | 100 | true | true | false | ******** | | guest | 104 | true | false | false | ******** | | (2 rows)

Anzeigen aktueller Abfragen

Im vorherigen Beispiel war die Benutzer-ID (USESYSID) für adminuser 100. Um die fünf letzten vom adminuser ausgeführten Abfragen aufzulisten, können Sie die Ansicht SVL_QLOG abfragen.

Die SVL_QLOG-Ansicht ist eine benutzerfreundlichere Teilmenge der Informationen aus der Tabelle STL_QUERY. Anhand dieser Ansicht können Sie die Abfrage-ID (QUERY) oder die Prozess-ID (PID) für eine kürzlich ausgeführte Abfrage finden. Sie können diese Ansicht auch verwenden, um zu überprüfen, wie lange eine Abfrage in Anspruch nahm. SVL_QLOG enthält die ersten 60 Zeichen der Abfragezeichenfolge (SUBSTRING), damit Sie eine bestimmte Abfrage besser finden können. Verwenden Sie die LIMIT-Klausel mit Ihrer SELECT-Anweisung, um die Ergebnisse auf fünf Zeilen zu begrenzen.

SELECT query, pid, elapsed, substring from svl_qlog WHERE userid = 100 ORDER BY starttime desc LIMIT 4;

Das Ergebnis sieht in etwa wie folgt aus.

query| pid | elapsed | substring ------+-------+----------+---------------------------------------------------------------- 892 | 21046 | 55868 | SELECT query, pid, elapsed, substring from svl_qlog WHERE us 620 | 17635 | 1296265 | SELECT query, pid, elapsed, substring from svl_qlog WHERE us 610 | 17607 | 82555 | SELECT * from DEMO; 596 | 16762 | 226372 | INSERT INTO DEMO VALUES (100);)