Abfragen der Systemtabellen und Ansichten - Amazon Redshift

Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blog-Posting.

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.

Abfragen der Systemtabellen und Ansichten

Zusätzlich zu den von Ihnen erstellten Tabellen enthält Ihr Data Warehouse eine Reihe von Systemtabellen und Ansichten. Diese Tabellen und Ansichten enthalten Informationen zu Ihrer Installation sowie zu den verschiedenen Abfragen und Prozessen, die auf dem System ausgeführt werden. Sie können diese Systemtabellen und Ansichten abfragen, um Informationen zu Ihrer Datenbank zu erhalten. Weitere Informationen finden Sie in der Referenz zu Systemtabellen und Ansichten im Datenbankentwicklerhandbuch zu Amazon Redshift. Die Beschreibung für jede Tabelle oder Ansicht 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.

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 Amazon Redshift Query Editor v2 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 | ******** | |

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 letzten von adminuser ausgeführten Abfragen aufzulisten, können Sie die Ansicht SYS_QUERY_HISTORY abfragen.

Anhand dieser Ansicht können Sie die Abfrage-ID (query_id) oder die Prozess-ID (session_id) 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. SYS_QUERY_HISTORY enthält die ersten 4.000 Zeichen der Abfragezeichenfolge (query_text), damit Sie eine bestimmte Abfrage besser finden können. Verwenden Sie die LIMIT-Klausel mit Ihrer SELECT-Anweisung, um die Ergebnisse zu begrenzen.

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

Feststellen der Sitzungs-ID einer laufenden Abfrage

Sie müssen möglicherweise die zu einer Abfrage gehörende Sitzungs-ID (Prozess-ID) angeben, um Systemtabelleninformationen zu einer Abfrage abzurufen. Möglicherweise müssen Sie aber auch die Sitzungs-ID für eine Abfrage ermitteln, die noch ausgeführt wird. So brauchen Sie etwa die Sitzungs-ID, wenn Sie eine Abfrage abbrechen müssen, die auf einem bereitgestellten Cluster zu viel Zeit in Anspruch nimmt. Sie können die STV_RECENTS-Systemtabelle abfragen, um eine Liste der Sitzungen IDs für laufende Abfragen zusammen mit der entsprechenden Abfragezeichenfolge zu erhalten. Wenn Ihre Abfrage mehrere Sitzungs-IDs ausgibt, können Sie anhand des Abfragetextes bestimmen, welche Sitzungs-ID Sie benötigen.

Um die Sitzungs-ID einer laufenden Abfrage zu bestimmen, führen Sie die folgende SELECT-Anweisung aus.

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