Informationsschema

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 und gcloud spanner databases execute-sql); andere Single-Read-Methoden von Cloud Spanner unterstützen INFORMATION_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:
  • ADDING_FOREIGN_KEY: Die Fremdschlüssel der Tabelle werden hinzugefügt.
  • WAITING_FOR_COMMIT: Fertigstellen der Schemaänderung.
  • COMMITTED: Die Schemaänderung zum Erstellen der Tabelle wurde festgeschrieben. Sie können erst dann in die Tabelle schreiben, wenn die Änderung übernommen wurde.

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:
  • WRITE_ONLY: Backfill für diese Spalte wird durchgeführt. Es ist kein Lesevorgang erlaubt.
  • COMMITTED: Die Spalte ist vollständig nutzbar.

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:
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • UNIQUE
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:
  • BACKFILLING_INDEXES: Backfill wird für Indexe durchgeführt.
  • VALIDATING_DATA: Vorhandene Daten und neue Schreibvorgänge werden überprüft.
  • WAITING_FOR_COMMIT: Die Bulk-Operationen des Fremdschlüssels wurden erfolgreich abgeschlossen oder gegebenenfalls keiner. Der Fremdschlüssel ist jedoch noch ausstehend.
  • COMMITTED: Die Schemaänderung wurde festgeschrieben.

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:
  • VALIDATING: Cloud Spanner validiert die vorhandenen Daten.
  • COMMITTED: Für diese Einschränkung gibt es keine aktive Schemaänderung.

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 KEYs 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:
  • PREPARE: Leere Tabellen für einen neuen Index erstellen.
  • WRITE_ONLY: Daten-Backfill für einen neuen Index ausführen.
  • WRITE_ONLY_CLEANUP: Neuen Index bereinigen.
  • WRITE_ONLY_VALIDATE_UNIQUE: Eindeutigkeit von Daten in einem neuen Index prüfen.
  • READ_WRITE: Normaler Indexvorgang.
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.