Das Informationsschema ist ein integriertes Schema, über das alle Cloud Spanner-Datenbanken verfügen. Sie können SQL-Abfragen für Tabellen im INFORMATION_SCHEMA
ausführen, um Schemametadaten für eine Datenbank abzurufen.
Mit der folgenden Abfrage etwa werden die Namen aller benutzerdefinierten Tabellen in einer Datenbank abgerufen:
SELECT
table_name
FROM
information_schema.tables
WHERE
table_catalog = '' and table_schema = ''
Nutzung
INFORMATION_SCHEMA
-Daten sind nur über SQL-Schnittstellen verfügbar(z. B.executeQuery
undgcloud spanner databases execute-sql
); andere Single-Read-Methoden von Cloud Spanner unterstützenINFORMATION_SCHEMA
nicht.- Abfragen für
INFORMATION_SCHEMA
können in einer schreibgeschützten Transaktion verwendet werden, jedoch nicht in einer Lese-Schreib-Transaktion. - Abfragen für
INFORMATION_SCHEMA
können starke Zeitstempelgrenzen, Zeitstempelgrenzen mit begrenzter Veralterung oder Zeitstempelgrenzen mit exakter Veralterung verwenden.
Tabellen im Schema
SCHEMATA
In der Tabelle INFORMATION_SCHEMA.SCHEMATA
sind die Schemas in der Datenbank aufgeführt. Dazu zählen das Informationsschema und ein unbenanntes Schema (im Folgenden als "Standardschema" bezeichnet), das von Ihnen definierte Tabellen enthält.
Spaltenname | Typ | Beschreibung |
---|---|---|
CATALOG_NAME |
STRING |
Der Name des Katalogs. Diese Spalte sorgt für die Kompatibilität mit Informationsschematabellen nach SQL-Standard. Sie enthält immer einen leeren String. |
SCHEMA_NAME |
STRING |
Der Name des Schemas. Die Spalte ist beim Standardschema leer und bei benannten Schemas nicht leer. |
INFORMATION_SCHEMA.DATABASE_OPTIONS
In dieser Tabelle sind die Optionen aufgeführt, die für die Datenbank festgelegt sind.
Spaltenname | Typ | Beschreibung |
---|---|---|
CATALOG_NAME |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
SCHEMA_NAME |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
OPTION_NAME |
STRING |
Der Name der Datenbankoption. |
OPTION_TYPE |
STRING |
Der Datentyp der Datenbankoption. |
OPTION_VALUE |
STRING |
Der Wert der Datenbankoption. |
INFORMATION_SCHEMA.TABLES
In dieser Tabelle sind die Tabellen und Ansichten in einem Schema aufgelistet.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle oder Ansicht. |
TABLE_TYPE |
STRING |
Der Typ der Tabelle. Bei Tabellen hat er den Wert BASE TABLE , bei Ansichten den Wert VIEW . |
PARENT_TABLE_NAME |
STRING |
Der Name der übergeordneten Tabelle, wenn die Tabelle verknüpft ist, oder NULL . |
ON_DELETE_ACTION |
STRING |
Dies ist für verschränkte Tabellen auf CASCADE oder NO ACTION festgelegt, ansonsten auf NULL . Weitere Informationen finden Sie unter TABLE-Anweisungen. |
SPANNER_STATE |
STRING |
Eine Tabelle kann bei der Erstellung mehrere Status durchlaufen, wenn Bulk-Vorgänge ausgeführt werden. Dies ist beispielsweise der Fall, wenn die Tabelle mit einem Fremdschlüssel erstellt wird, für den ein Backfill ihrer Indexe erforderlich ist. Mögliche Status sind:
|
INFORMATION_SCHEMA.COLUMNS
In dieser Tabelle werden die Spalten in einer Tabelle aufgeführt.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle. |
COLUMN_NAME |
STRING |
Der Name der Spalte. |
ORDINAL_POSITION |
INT64 |
Die ordinale Position der Spalte in der Tabelle, beginnend mit dem Wert 1. |
COLUMN_DEFAULT |
BYTES |
Enthalten, um den SQL-Standard zu erfüllen. Immer NULL . |
DATA_TYPE |
STRING |
Enthalten, um den SQL-Standard zu erfüllen. Immer NULL . |
IS_NULLABLE |
STRING |
Ein String, der angibt, ob die Spalte Nullwerte enthalten kann. Gemäß dem SQL-Standard ist der String entweder YES oder NO und kein boolescher Wert. |
SPANNER_TYPE |
STRING |
Der Datentyp der Spalte. |
IS_GENERATED |
STRING |
Ein String, der angibt, ob die Spalte generiert wird. Der String ist entweder ALWAYS für eine generierte Spalte oder NEVER für eine nicht generierte Spalte. |
GENERATION_EXPRESSION |
STRING |
Ein String, der den SQL-Ausdruck einer generierten Spalte darstellt.
NULL , wenn die Spalte keine generierte Spalte ist. |
IS_STORED |
STRING |
Ein String, der angibt, ob die generierte Spalte gespeichert wird.
Bei generierten Spalten ist der String immer YES und für nicht generierte Spalten NULL . |
SPANNER_STATE |
STRING |
Der aktuelle Status der Spalte. Eine neue gespeicherte generierte Spalte, die einer vorhandenen Tabelle hinzugefügt wird, kann mehrere vom Nutzer beobachtbare Zustände durchlaufen, bevor sie vollständig verwendet werden kann. Folgende Werte sind möglich:
|
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
Diese Tabelle enthält eine Zeile für jede Einschränkung, die für die Tabellen in der Datenbank definiert ist.
Spaltenname | Typ | Beschreibung |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
Immer ein leerer String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des Schemas der Einschränkung. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name der Einschränkung. |
TABLE_CATALOG |
STRING |
Der Name des Katalogs der eingeschränkten Tabelle. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas der eingeschränkten Tabelle. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der eingeschränkten Tabelle. |
CONSTRAINT_TYPE |
STRING |
Der Typ der Einschränkung. Folgende Werte sind möglich:
|
IS_DEFERRABLE |
STRING |
Immer NO . |
INITIALLY_DEFERRED |
STRING |
Immer NO . |
ENFORCED |
STRING |
Immer YES . |
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
In dieser Tabelle sind Tabellen aufgeführt, in denen Einschränkungen definiert oder verwendet werden. Enthält Tabellen, die PRIMARY KEY
- und UNIQUE
- Einschränkungen definieren. Enthält auch die Referenztabellen mit FOREIGN KEY
-Definitionen.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs der eingeschränkten Tabelle. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas der eingeschränkten Tabelle. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der eingeschränkten Tabelle. |
CONSTRAINT_CATALOG |
STRING |
Der Name des Katalogs der Einschränkung. Immer ein leerer String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des Schemas der Einschränkung. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name der Einschränkung. |
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
Diese Tabelle enthält eine Zeile zu jeder Einschränkung von FOREIGN KEY
.
Spaltenname | Typ | Beschreibung |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
Der Name des FOREIGN KEY-Katalogs. Immer ein leerer String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des FOREIGN KEY-Schemas. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name des FOREIGN KEY. |
UNIQUE_CONSTRAINT_CATALOG |
STRING |
Der Katalogname der PRIMARY KEY- oder UNIQUE-Einschränkung, auf die die FOREIGN KEY-Referenzen verweisen. Immer ein leerer String. |
UNIQUE_CONSTRAINT_SCHEMA |
STRING |
Der Schemaname der PRIMARY KEY- oder UNIQUE-Einschränkung, auf die die FOREIGN KEY-Referenzen verweisen. Eine leere Zeichenfolge, falls unbenannt. |
UNIQUE_CONSTRAINT_NAME |
STRING |
Der Name der PRIMARY KEY- oder UNIQUE-Einschränkung, auf die der FOREIGN KEY-verweist. |
MATCH_OPTION |
STRING |
Immer SIMPLE . |
UPDATE_RULE |
STRING |
Immer NO ACTION . |
DELETE_RULE |
STRING |
Immer NO ACTION . |
SPANNER_STATE |
STRING |
Der aktuelle Status des Fremdschlüssels. Spanner setzt die Einschränkung erst durch, wenn die Backing-Indexe des Fremdschlüssels erstellt und ausgefüllt wurden. Sobald die Indexe bereit sind, beginnt Spanner, die Einschränkung für neue Transaktionen durchzusetzen, während die vorhandenen Daten validiert werden. Folgende Werte und zugehörige Status sind möglich:
|
INFORMATION_SCHEMA.CHECK_CONSTRAINTS
Die Tabelle INFORMATION_SCHEMA.CHECK_CONSTRAINTS
enthält eine Zeile zu jeder CHECK
-Einschränkung, die entweder durch den CHECK
- oder den NOT NULL
-Suchbegriff definiert ist.
Spaltenname | Typ | Beschreibung |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
Der Name des Katalogs der Einschränkung. Diese Spalte ist nie Null, enthält jedoch immer einen leeren String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des Schemas der Einschränkung. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name der Einschränkung. Diese Spalte ist nie Null. Wenn in der Schemadefinition nicht explizit angegeben, wird ein systemdefinierter Name zugewiesen. |
CHECK_CLAUSE |
STRING |
Die Ausdrücke der CHECK -Einschränkung. Diese Spalte ist nie Null. |
SPANNER_STATE |
STRING |
Der aktuelle Status der CHECK -Einschränkung. Diese Spalte ist nie Null. Folgende Status sind möglich:
|
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Diese Tabelle enthält eine Zeile zu jeder Spalte der Tabellen von TABLE_CONSTRAINTS
, die durch die Einschränkung PRIMARY KEY
, FOREIGN KEY
oder UNIQUE
als Schlüssel eingeschränkt sind. Dies sind die Spalten der Tabellen, die die Einschränkungen definieren.
Spaltenname | Typ | Beschreibung |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
Der Name des Katalogs der Einschränkung. Immer ein leerer String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des Schemas der Einschränkung. Diese Spalte ist nie Null. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name der Einschränkung. |
TABLE_CATALOG |
STRING |
Der Name des Katalogs der eingeschränkten Spalte. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas der eingeschränkten Spalte. Diese Spalte ist nie Null. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle der eingeschränkten Spalte. |
COLUMN_NAME |
STRING |
Der Name der Spalte. |
ORDINAL_POSITION |
INT64 |
Die ordinale Position der Spalte innerhalb des Schlüssels der Einschränkung, beginnend mit dem Wert 1 . |
POSITION_IN_UNIQUE_CONSTRAINT |
INT64 |
Für FOREIGN KEY s die ordinale Position der Spalte innerhalb der eindeutigen Einschränkung, beginnend mit dem Wert 1 . Bei anderen Einschränkungstypen ist diese Spalte null. |
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
Diese Tabelle enthält eine Zeile über jede Spalte, die von einer Einschränkung verwendet wird. Enthält die Spalten PRIMARY KEY
und UNIQUE
sowie die referenzierten Spalten von FOREIGN KEY
-Einschränkungen.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs der Spaltentabelle. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Tabellenschemas. Diese Spalte ist nie Null. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle der Spalte. |
COLUMN_NAME |
STRING |
Der Name der Spalte, die von der Einschränkung verwendet wird. |
CONSTRAINT_CATALOG |
STRING |
Der Name des Katalogs der Einschränkung. Immer ein leerer String. |
CONSTRAINT_SCHEMA |
STRING |
Der Name des Schemas der Einschränkung. Eine leere Zeichenfolge, falls unbenannt. |
CONSTRAINT_NAME |
STRING |
Der Name der Einschränkung. |
INFORMATION_SCHEMA.INDEXES
In dieser Tabelle sind die Indexe in einem Schema aufgeführt.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle. |
INDEX_NAME |
STRING |
Der Name des Index. Tabellen mit einer PRIMARY KEY -Spezifikation haben einen Pseudo-Indexeintrag, der mit dem Namen PRIMARY_KEY erzeugt wurde, wodurch die Felder des Primärschlüssels bestimmt werden können. |
INDEX_TYPE |
STRING |
Der Typ des Index. Der Typ ist INDEX oder PRIMARY_KEY . |
PARENT_TABLE_NAME |
STRING |
Sekundäre Indexe können in einer übergeordneten Tabelle verschränkt sein, wie unter Sekundären Index erstellen erläutert. Diese Spalte enthält den Namen der übergeordneten Tabelle oder NULL , wenn der Index nicht verschränkt ist. |
IS_UNIQUE |
BOOL |
Gibt an, ob die Indexschlüssel einmalig sein müssen. |
IS_NULL_FILTERED |
BOOL |
Gibt an, ob der Index Einträge mit NULL -Werten enthält. |
INDEX_STATE |
STRING |
Der aktuelle Status des Index. Folgende Werte und zugehörige Status sind möglich:
|
SPANNER_IS_MANAGED |
BOOL |
"True", wenn der Index von Cloud Spanner verwaltet wird; andernfalls "False". Sekundäre Sicherungsindexe für Fremdschlüssel werden von Cloud Spanner verwaltet. |
INFORMATION_SCHEMA.INDEX_COLUMNS
In dieser Tabelle werden die Spalten in einem Index aufgeführt.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Tabelle. |
INDEX_NAME |
STRING |
Der Name des Index. |
COLUMN_NAME |
STRING |
Der Name der Spalte. |
ORDINAL_POSITION |
INT64 |
Die ordinale Position der Spalte im Index (oder Primärschlüssel), beginnend mit dem Wert 1. Dieser Wert ist NULL bei Spalten, die keine Schlüsselspalten sind (beispielsweise Spalten, die in der STORING -Klausel eines Index angegeben werden). |
COLUMN_ORDERING |
STRING |
Die Reihenfolge innerhalb der Spalte. Der Wert ist ASC oder DESC bei Schlüsselspalten und NULL bei Spalten, die sich nicht auf Schlüssel beziehen (z. B. Spalten, die in der STORING -Klausel eines Index angegeben werden). |
IS_NULLABLE |
STRING |
Ein String, der angibt, ob die Spalte Nullwerte enthalten kann. Gemäß dem SQL-Standard ist der String entweder YES oder NO und kein boolescher Wert. |
SPANNER_TYPE |
STRING |
Der Datentyp der Spalte. |
INFORMATION_SCHEMA.COLUMN_OPTIONS
Diese Tabelle enthält die Spaltenoptionen in einer Tabelle.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Der Name ist für das Standardschema leer und für andere Schemas nicht leer (z. B. INFORMATION_SCHEMA selbst).
Diese Spalte ist nie Null. |
TABLE_NAME |
STRING |
Der Name der Tabelle. |
COLUMN_NAME |
STRING |
Der Name der Spalte. |
OPTION_NAME |
STRING |
Eine SQL-Kennung, die die Option eindeutig identifiziert. Diese Kennung ist der Schlüssel der OPTIONS -Klausel in DDL.
|
OPTION_TYPE |
STRING |
Ein Datentypname, der der Typ dieses Optionswerts ist. |
OPTION_VALUE |
STRING |
Ein SQL-Literal, das den Wert dieser Option beschreibt. Der Wert dieser Spalte muss als Teil einer Abfrage analysiert werden können. Der Ausdruck, der beim Analysieren des Werts entsteht, muss in OPTION_TYPE umwandelbar sein. Diese Spalte ist nie Null. |
INFORMATION_SCHEMA.SPANNER_STATISTICS
In dieser Tabelle sind die verfügbaren Statistikpakete für die Abfrageoptimierung aufgeführt.
Spaltenname | Typ | Beschreibung |
---|---|---|
CATALOG_NAME |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
SCHEMA_NAME |
STRING |
Der Name des Schemas. Der Name ist für das Standardschema leer und für andere Schemas nicht leer (z. B. INFORMATION_SCHEMA selbst).
Diese Spalte ist nie Null. |
PACKAGE_NAME |
STRING |
Der Name des Statistikpakets. |
ALLOW_GC |
BOOL |
„False“, wenn das Statistikpaket von der automatischen Speicherbereinigung ausgenommen ist; andernfalls „True“.
Dieses Attribut muss auf „False“ gesetzt sein, um in einem Hinweis oder über die Client API auf das Statistikpaket zu verweisen. |
INFORMATION_SCHEMA.VIEWS
In dieser Tabelle sind Informationen zu den Ansichten in einem Schema aufgeführt.
Spaltenname | Typ | Beschreibung |
---|---|---|
TABLE_CATALOG |
STRING |
Der Name des Katalogs. Immer ein leerer String. |
TABLE_SCHEMA |
STRING |
Der Name des Schemas. Eine leere Zeichenfolge, falls unbenannt. |
TABLE_NAME |
STRING |
Der Name der Ansicht. |
VIEW_DEFINITION |
STRING |
Der SQL-Text der Abfrage, die die Ansicht definiert. |
Beispiele
Gibt Informationen zu allen Tabellen im Nutzerschema zurück:
SELECT
t.table_name,
t.parent_table_name
FROM
information_schema.tables AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name
Informationen zu den Spalten in der Nutzertabelle MyTable
zurückgeben:
SELECT
t.column_name,
t.spanner_type,
t.is_nullable
FROM
information_schema.columns AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
AND
t.table_name = 'MyTable'
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name,
t.ordinal_position
Gibt Informationen zur standardmäßig führenden Region für die Datenbank zurück. Wenn nicht die standardmäßige führende Region festgelegt ist, werden leere Werte zurückgegeben.
SELECT
s.OPTION_NAME,
s.OPTION_VALUE
FROM
INFORMATION_SCHEMA.DATABASE_OPTIONS s
WHERE
s.OPTION_NAME = 'default_leader'
Gibt Informationen zu allen Indexen im Nutzerschema zurück:
SELECT
t.table_name,
t.index_name,
t.parent_table_name
FROM
information_schema.indexes AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
AND
t.index_type != 'PRIMARY_KEY'
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name,
t.index_name
Gibt alle Spalten zurück, die andere Optionen als die Standardoptionen verwenden:
SELECT
t.table_name,
t.column_name,
t.option_type,
t.option_value,
t.option_name
FROM
information_schema.column_options AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
Gibt die aktuellen Datenbankoptionen im Optimierungstool zurück:
SELECT
s.OPTION_NAME,
s.OPTION_VALUE
FROM
INFORMATION_SCHEMA.DATABASE_OPTIONS s
WHERE
s.SCHEMA_NAME=''
AND s.OPTION_NAME IN ('optimizer_version',
'optimizer_statistics_package')
Gibt alle verfügbaren Statistikpakete zurück:
SELECT
*
FROM
INFORMATION_SCHEMA.SPANNER_STATISTICS;
Nächste Schritte
- Informieren Sie sich über die verfügbaren Tools zur Überprüfung, mit denen Sie Datenbankprobleme untersuchen können.