Schritt 6: Fragen Sie die Systemtabellen ab - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 6: Fragen Sie die Systemtabellen ab

Zusätzlich zu den Tabellen, die Sie erstellen, enthält Ihr Data Warehouse eine Reihe von Systemtabellen und Ansichten. 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. Weitere Informationen finden Sie unter Referenz zu Systemtabellen und -ansichten im Amazon Redshift Database Developer Guide. Die Beschreibung jeder Tabelle oder Ansicht gibt an, ob eine 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.

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

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 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

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

set search_path to '$user', 'public', 'sales'; 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

Weitere Informationen finden Sie in der Tabelle PG_TABLE_DEF.

Sie können auch den Amazon Redshift Redshift-Abfrage-Editor v2 verwenden, um alle Tabellen in einem bestimmten Schema anzuzeigen, indem Sie zunächst eine Datenbank auswählen, zu 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 | ******** | |

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 WHERE usesysid > 1; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+----------+----------+----------- awsuser | 100 | true | true | false | ******** | | guest | 104 | true | false | false | ******** | |

Anzeigen aktueller Abfragen

Im vorherigen Beispiel ist die Benutzer-ID (user_id) für adminuser 100. Um die vier zuletzt von ausgeführten Abfragen aufzulistenadminuser, können Sie die Ansicht SYS_QUERY_HISTORY abfragen.

Sie können diese Ansicht verwenden, um die Abfrage-ID (query_id) oder die Prozess-ID (session_id) für eine kürzlich ausgeführte Abfrage zu finden. Sie können diese Ansicht auch verwenden, um zu überprüfen, wie lange eine Abfrage in Anspruch nahm. SYS_QUERY_HISTORY enthält die ersten 4.000 Zeichen der Abfragezeichenfolge (query_text), um Ihnen das Auffinden einer bestimmten Abfrage zu erleichtern. Verwenden Sie die LIMIT-Klausel mit Ihrer SELECT-Anweisung, um die Ergebnisse einzuschränken.

SELECT query_id, session_id, elapsed_time, query_text FROM sys_query_history WHERE user_id = 100 ORDER BY start_time desc LIMIT 4;

Das Ergebnis sieht in etwa wie folgt aus.

query_id | session_id | elapsed_time | query_text ----------+--------------+---------------+---------------------------------------------------------------- 892 | 21046 | 55868 | SELECT query, pid, elapsed, substring from ... 620 | 17635 | 1296265 | SELECT query, pid, elapsed, substring from ... 610 | 17607 | 82555 | SELECT * from DEMO; 596 | 16762 | 226372 | INSERT INTO DEMO VALUES (100);

Ermitteln Sie die Sitzungs-ID einer laufenden Abfrage

Um Systemtabelleninformationen zu einer Abfrage abzurufen, müssen Sie möglicherweise die Sitzungs-ID (Prozess-ID) angeben, die dieser Abfrage zugeordnet ist. Oder Sie müssen möglicherweise die Sitzungs-ID für eine Abfrage ermitteln, die noch ausgeführt wird. Beispielsweise benötigen Sie die Sitzungs-ID, wenn Sie eine Abfrage abbrechen müssen, deren Ausführung auf einem bereitgestellten Cluster zu lange dauert. Sie können die STV_RECENTS-Systemtabelle abfragen, um eine Liste von Sitzungs-IDs für laufende Abfragen zusammen mit der entsprechenden Abfragezeichenfolge zu erhalten. Wenn Ihre Abfrage mehrere Sitzungen zurückgibt, können Sie anhand des Abfragetextes ermitteln, welche Sitzungs-ID Sie benötigen.

Führen Sie die folgende SELECT-Anweisung aus, um die Sitzungs-ID einer laufenden Abfrage zu ermitteln.

SELECT session_id, user_id, start_time, query_text FROM sys_query_history WHERE status='running';