Visualizzazione SEARCH_INDEXES_BY_ORGANIZATION

Gli indici di ricerca BigQuery forniscono una gestione gratuita degli indici finché la tua organizzazione non raggiunge il limite in una determinata regione. Puoi utilizzare la visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION per comprendere il tuo consumo attuale rispetto a questo limite, suddiviso per progetti e tabelle. La visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION contiene una riga per ogni indice di ricerca per l'intera organizzazione associata al progetto corrente.

Autorizzazioni obbligatorie

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION, devi disporre delle seguenti autorizzazioni IAM (Identity and Access Management) per la tua organizzazione:

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

Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:

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

Questa visualizzazione dello schema è disponibile solo per gli utenti con organizzazioniGoogle Cloud definite.

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

La vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION ha lo schema seguente:

Nome colonna Tipo di dati Valore
project_id STRING Il nome del progetto che contiene il set di dati.
project_number STRING Il numero di progetto che contiene il set di dati.
index_catalog STRING Il nome del progetto che contiene il set di dati.
index_schema STRING Il nome del set di dati che contiene l'indice.
table_name STRING Il nome della tabella di base su cui viene creato l'indice.
index_name STRING Il nome dell'indice di ricerca.
index_status STRING Lo stato dell'indice può essere uno dei seguenti:
  • ACTIVE: l'indice è utilizzabile o in fase di creazione.
  • PENDING DISABLEMENT: la dimensione totale delle tabelle di base indicizzate supera il limite della tua organizzazione; l'indice è in coda per l'eliminazione. In questo stato, l'indice è utilizzabile nelle query di ricerca e ti viene addebitato lo spazio di archiviazione dell'indice di ricerca.
  • TEMPORARILY DISABLED: la dimensione totale delle tabelle di base indicizzate supera il limite della tua organizzazione oppure la tabella di base indicizzata è inferiore a 10 GB. In questo stato, l'indice non viene utilizzato nelle query di ricerca e non ti viene addebitato lo spazio di archiviazione dell'indice di ricerca.
  • PERMANENTLY DISABLED: è stata apportata una modifica dello schema incompatibile alla tabella di base, ad esempio la modifica del tipo di una colonna indicizzata da STRING a INT64.
index_status_details RECORD Il record contiene i seguenti campi:
  • throttle_status: indica lo stato di limitazione dell'indice di ricerca. I valori possibili sono:
    • UNTHROTTLED: l'indice è utilizzabile.
    • BASE_TABLE_TOO_SMALL: le dimensioni della tabella di base sono inferiori a 10 GB. Questo limite si applica indipendentemente dal fatto che utilizzi o meno la tua prenotazione per i job di gestione dell'indice. In questo caso, l'indice viene disattivato temporaneamente e le query di ricerca non lo utilizzano.
    • BASE_TABLE_TOO_LARGE: la dimensione della tabella di base supera il limite della tua organizzazione.
    • ORGANIZATION_LIMIT_EXCEEDED: le dimensioni totali delle tabelle di base indicizzate nella tua organizzazione superano il limite della tua organizzazione.
  • message: messaggio dettagliato che descrive lo stato dell'indice.
use_background_reservation BOOL Indica se la manutenzione dell'indice utilizza la prenotazione BACKGROUND. Questa opzione è impostata su FALSE quando la manutenzione dell'indice utilizza il limite.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION Organizzazione che contiene il progetto specificato REGION

Sostituisci quanto segue:

  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.

  • REGION: la regione per il tuo progetto. Ad esempio: `myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Limitazione dell'indice

Se un indice viene limitato, le dimensioni della tabella non vengono conteggiate ai fini del limite dell'organizzazione. Questa limitazione si verifica quando le dimensioni della tabella di base sono inferiori a 10 GB o superano il limite della tua organizzazione. Quando un indice viene limitato, i relativi job di gestione vengono sospesi, causando l'obsolescenza dell'indice e la sua disattivazione temporanea. Di conseguenza, le query di ricerca non possono utilizzare l'indice.

Esempi

Questa sezione include query di esempio della visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Verificare se il consumo supera il limite in una determinata regione

Il seguente esempio illustra se la dimensione totale della tabella di base indicizzata in un'organizzazione, che utilizza slot condivisi all'interno della multiregione degli Stati Uniti, supera i 100 TB:

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

Il risultato è simile al seguente:

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

Trovare le dimensioni totali della tabella di base indicizzata per progetti in una regione

L'esempio seguente mostra la suddivisione di ogni progetto in una regione multiregionale degli Stati Uniti con la dimensione totale delle tabelle di base indicizzate:

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

Il risultato è simile al seguente:

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

Trovare gli indici di ricerca limitati

L'esempio seguente restituisce tutti gli indici di ricerca limitati all'interno dell'organizzazione e della regione:

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

Il risultato è simile al seguente:

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