Ansicht SEARCH_INDEXES_BY_ORGANIZATION

BigQuery-Suchindexe bieten eine kostenlose Indexverwaltung, bis Ihre Organisation das Limit in einer bestimmten Region erreicht. In der Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION können Sie die aktuelle Nutzung des Limits aufgeschlüsselt nach Projekten und Tabellen sehen. Die Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION enthält eine Zeile für jeden Suchindex für die gesamte Organisation, die dem aktuellen Projekt zugeordnet ist.

Erforderliche Berechtigungen

Zum Abfragen der Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION benötigen Sie die folgenden IAM-Berechtigungen (Identity and Access Management) für Ihre Organisation:

  • bigquery.tables.get
  • bigquery.tables.list

Die folgenden vordefinierten IAM-Rollen enthalten jeweils die vorherigen Berechtigungen:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

Diese Schemaansicht ist nur für Nutzer mit definierten Google Cloud -Organisationen verfügbar.

Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schema

Die Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION hat das folgende Schema:

Spaltenname Datentyp Wert
project_id STRING Der Name des Projekts, zu dem das Dataset gehört.
project_number STRING Die Nummer des Projekts, das das Dataset enthält.
index_catalog STRING Der Name des Projekts, zu dem das Dataset gehört.
index_schema STRING Der Name des Datasets, das den Index enthält.
table_name STRING Der Name der Basistabelle, für die der Index erstellt wird.
index_name STRING Der Name des Suchindex.
index_status STRING Der Status des Index kann einer der folgenden sein:
  • ACTIVE: Der Index kann verwendet werden oder wird gerade erstellt.
  • PENDING DISABLEMENT: Die Gesamtgröße der indexierten Basistabellen überschreitet das Limit Ihrer Organisation. Der Index wird zum Löschen in die Warteschlange gestellt. In diesem Zustand kann der Index für Suchanfragen verwendet werden und Ihnen wird der Suchindexspeicher in Rechnung gestellt.
  • TEMPORARILY DISABLED: Die Gesamtgröße der indexierten Basistabellen überschreitet das Limit Ihrer Organisation oder die indexierte Basistabelle ist kleiner als 10 GB. In diesem Zustand wird der Index nicht in Suchanfragen verwendet und Ihnen werden keine Kosten für den Speicher des Suchindex berechnet.
  • PERMANENTLY DISABLED: Es gibt eine inkompatible Schemaänderung in der Basistabelle, z. B. das Ändern des Typs einer indexierten Spalte von STRING in INT64.
index_status_details RECORD Der Datensatz enthält die folgenden Felder:
  • throttle_status: Gibt den Drosselungsstatus des Suchindex an. Mögliche Werte sind:
    • UNTHROTTLED: Der Index ist nutzbar.
    • BASE_TABLE_TOO_SMALL: Die Größe der Basistabelle ist kleiner als 10 GB. Dieses Limit gilt unabhängig davon, ob Sie Ihre eigene Reservierung für Ihre Indexverwaltungsjobs verwenden. In diesem Fall wird der Index vorübergehend deaktiviert und Suchanfragen verwenden ihn nicht.
    • BASE_TABLE_TOO_LARGE: Die Größe der Basistabelle überschreitet das Limit Ihrer Organisation.
    • ORGANIZATION_LIMIT_EXCEEDED: Die Gesamtgröße der indexierten Basistabellen in Ihrer Organisation überschreitet das Limit Ihrer Organisation.
  • message: Detaillierte Meldung, die den Indexstatus beschreibt.
use_background_reservation BOOL Gibt an, ob für die Indexwartung die BACKGROUND-Reservierung verwendet wird. Dieser Wert wird auf FALSE gesetzt, wenn bei der Indexwartung das Limit verwendet wird.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION Organisation, die das angegebene Projekt enthält REGION

Ersetzen Sie Folgendes:

  • Optional: PROJECT_ID: die ID IhresGoogle Cloud -Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.

  • REGION: Die Region für Ihr Projekt. Beispiel: `myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION

Indexdrosselung

Wenn ein Index gedrosselt wird, wird seine Tabellengröße nicht auf das Limit Ihrer Organisation angerechnet. Diese Drosselung tritt auf, wenn die Größe der Basistabelle unter 10 GB liegt oder das Limit Ihrer Organisation überschreitet. Wenn ein Index gedrosselt wird, werden seine Verwaltungsjobs pausiert. Dadurch wird der Index veraltet und schließlich vorübergehend deaktiviert. Daher kann der Index nicht für Suchanfragen verwendet werden.

Beispiele

Dieser Abschnitt enthält Beispielabfragen für die Ansicht INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Herausfinden, ob die Nutzung das Limit in einer bestimmten Region überschreitet

Im folgenden Beispiel wird veranschaulicht, ob die Gesamtgröße der indexierten Basistabellen in einer Organisation, die freigegebene Slots in der US-Mehrfachregion nutzt, 100 TB überschreitet:

WITH
 indexed_base_table_size AS (
 SELECT
   SUM(base_table.total_logical_bytes) AS total_logical_bytes
 FROM
   `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
 JOIN
   `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
 ON
   (search_index.table_name = base_table.table_name
     AND search_index.project_id = base_table.project_id
     AND search_index.index_schema = base_table.table_schema)
 WHERE
   TRUE
   -- Excludes search indexes that are permanently disabled.
   AND search_index.index_status != 'PERMANENTLY DISABLED'
   -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
   -- less than 10 GB. These tables don't count toward the limit.
   AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
   -- Excludes search indexes whose project has BACKGROUND reservation purchased
   -- for search indexes.
   AND search_index.use_background_reservation = false
 -- Outputs the total indexed base table size if it exceeds 100 TB,
 -- otherwise, doesn't return any output.
)
SELECT * FROM indexed_base_table_size
WHERE total_logical_bytes >= 109951162777600 -- 100 TB

Das Ergebnis sieht etwa so aus:

+---------------------+
| total_logical_bytes |
+---------------------+
|     109951162777601 |
+---------------------+

Gesamtgröße der indexierten Basistabellen nach Projekten in einer Region ermitteln

Im folgenden Beispiel wird die Aufschlüsselung für jedes Projekt in einer US-Multiregion mit der Gesamtgröße der indexierten Basistabellen dargestellt:

SELECT
 search_index.project_id,
 search_index.use_background_reservation,
 SUM(base_table.total_logical_bytes) AS total_logical_bytes
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
JOIN
 `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
ON
 (search_index.table_name = base_table.table_name
   AND search_index.project_id = base_table.project_id
   AND search_index.index_schema = base_table.table_schema)
WHERE
 TRUE
  -- Excludes search indexes that are permanently disabled.
  AND search_index.index_status != 'PERMANENTLY DISABLED'
  -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
  -- less than 10 GB. These tables don't count toward limit.
 AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
GROUP BY search_index.project_id, search_index.use_background_reservation

Das Ergebnis sieht etwa so aus:

+---------------------+----------------------------+---------------------+
|     project_id      | use_background_reservation | total_logical_bytes |
+---------------------+----------------------------+---------------------+
| projecta            |     true                   |     971329178274633 |
+---------------------+----------------------------+---------------------+
| projectb            |     false                  |     834638211024843 |
+---------------------+----------------------------+---------------------+
| projectc            |     false                  |     562910385625126 |
+---------------------+----------------------------+---------------------+

Gedrosselte Suchindexe finden

Im folgenden Beispiel werden alle Suchindexe zurückgegeben, die in der Organisation und Region gedrosselt werden:

SELECT project_id, index_schema, table_name, index_name
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
WHERE
 -- Excludes search indexes that are permanently disabled.
 index_status != 'PERMANENTLY DISABLED'
 AND index_status_details.throttle_status IN ('ORGANIZATION_LIMIT_EXCEEDED', 'BASE_TABLE_TOO_LARGE')

Das Ergebnis sieht etwa so aus:

+--------------------+--------------------+---------------+----------------+
|     project_id     |    index_schema    |  table_name   |   index_name   |
+--------------------+--------------------+---------------+----------------+
|     projecta       |     dataset_us     |   table1      |    index1      |
|     projectb       |     dataset_us     |   table1      |    index1      |
+--------------------+--------------------+---------------+----------------+