Vue SEARCH_INDEXES_BY_ORGANIZATION
Les index de recherche BigQuery permettent de gérer les index sans frais jusqu'à ce que votre organisation atteigne la limite dans une région donnée. Vous pouvez utiliser la vue INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
pour comprendre votre consommation actuelle par rapport à cette limite, ventilée par projets et tables. La vue INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
contient une ligne pour chaque index de recherche pour l'ensemble de l'organisation associée au projet en cours.
Autorisations requises
Pour interroger la vue INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
, vous avez besoin des autorisations IAM (Identity and Access Management) suivantes pour votre organisation :
bigquery.tables.get
bigquery.tables.list
Chacun des rôles IAM prédéfinis suivants inclut les autorisations ci-dessus :
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.metadataViewer
Cette vue du schéma n'est disponible que pour les utilisateurs associés à des Google Cloud organisations définies.
Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.
Schéma
La vue INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
project_id |
STRING |
Nom du projet qui contient l'ensemble de données. |
project_number |
STRING |
Numéro du projet contenant l'ensemble de données. |
index_catalog |
STRING |
Nom du projet qui contient l'ensemble de données. |
index_schema |
STRING |
Nom de l'ensemble de données contenant l'index. |
table_name |
STRING |
Nom de la table de base sur laquelle l'index est créé. |
index_name |
STRING |
Nom de l'index de recherche. |
index_status |
STRING |
L'état de l'index peut être l'un des suivants :
|
index_status_details |
RECORD |
L'enregistrement contient les champs suivants :
|
use_background_reservation |
BOOL |
Indique si la maintenance de l'index utilise la réservation BACKGROUND . La valeur est définie sur FALSE lorsque la maintenance de l'index utilise la limite. |
Champ d'application et syntaxe
Les requêtes exécutées sur cette vue doivent inclure un qualificatif de région. Le tableau suivant explique le champ d'application de la région pour cette vue :
Nom de la vue | Champ d'application de la ressource | Champ d'application de la région |
---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION |
Organisation contenant le projet spécifié | REGION |
Remplacez les éléments suivants :
PROJECT_ID
(facultatif) : ID de votre projetGoogle Cloud . Si non spécifié, le projet par défaut est utilisé.REGION
: région de votre projet. Par exemple,`myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Limitation de l'index
Si un index est limité, la taille de sa table n'est pas comptabilisée dans la limite de votre organisation. Cette limitation se produit lorsque la taille de la table de base est inférieure à 10 Go ou dépasse la limite de votre organisation. Lorsqu'un index est limité, ses tâches de gestion sont suspendues, ce qui le rend obsolète et finit par le désactiver temporairement. Par conséquent, les requêtes de recherche ne peuvent pas utiliser l'index.
Exemples
Cette section inclut des exemples de requêtes de la vue INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
.
Vérifier si la consommation dépasse la limite dans une région donnée
L'exemple suivant illustre le cas où la taille totale des tables de base indexées dans une organisation, utilisant des emplacements partagés dans la zone multirégionale des États-Unis, dépasse 100 To :
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
Le résultat ressemble à ce qui suit :
+---------------------+ | total_logical_bytes | +---------------------+ | 109951162777601 | +---------------------+
Trouver la taille totale des tables de base indexées par projet dans une région
L'exemple suivant fournit la répartition de chaque projet dans une région multirégionale des États-Unis avec la taille totale des tables de base indexées :
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
Le résultat ressemble à ce qui suit :
+---------------------+----------------------------+---------------------+ | project_id | use_background_reservation | total_logical_bytes | +---------------------+----------------------------+---------------------+ | projecta | true | 971329178274633 | +---------------------+----------------------------+---------------------+ | projectb | false | 834638211024843 | +---------------------+----------------------------+---------------------+ | projectc | false | 562910385625126 | +---------------------+----------------------------+---------------------+
Identifier les index de recherche limités
L'exemple suivant renvoie tous les index de recherche limités dans l'organisation et la région :
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')
Le résultat ressemble à ce qui suit :
+--------------------+--------------------+---------------+----------------+ | project_id | index_schema | table_name | index_name | +--------------------+--------------------+---------------+----------------+ | projecta | dataset_us | table1 | index1 | | projectb | dataset_us | table1 | index1 | +--------------------+--------------------+---------------+----------------+