Vista SEARCH_INDEXES_BY_ORGANIZATION

Los índices de búsqueda de BigQuery proporcionan administración de índices gratuita hasta que tu organización alcance el límite en una región determinada. Puedes usar la vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION para comprender tu consumo actual en relación con ese límite, desglosado por proyectos y tablas. La vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION contiene una fila para cada índice de búsqueda de toda la organización asociada con el proyecto actual.

Permisos necesarios

Para consultar la vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION, necesitas los siguientes permisos de Identity and Access Management (IAM) para tu organización:

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

Cada uno de los siguientes roles predefinidos de IAM incluye los permisos anteriores:

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

Esta vista de esquema solo está disponible para los usuarios con Google Cloud organizaciones definidas.

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Esquema

La vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
project_id STRING El nombre del proyecto que contiene el conjunto de datos.
project_number STRING Es el número del proyecto que contiene el conjunto de datos.
index_catalog STRING El nombre del proyecto que contiene el conjunto de datos.
index_schema STRING Es el nombre del conjunto de datos que contiene el índice.
table_name STRING El nombre de la tabla base en la que se crea el índice.
index_name STRING Es el nombre del índice de búsqueda.
index_status STRING El estado del índice puede ser uno de los siguientes:
  • ACTIVE: El índice se puede usar o crear.
  • PENDING DISABLEMENT: El tamaño total de las tablas base indexadas supera el límite de tu organización. El índice se pone en cola para su eliminación. En este estado, el índice se puede usar en las búsquedas y se te cobra por el almacenamiento del índice de búsqueda.
  • TEMPORARILY DISABLED: El tamaño total de las tablas base indexadas supera el límite de tu organización, o la tabla indexada base es inferior a 10 GB. En este estado, el índice no se usa en las búsquedas y no se te cobra por el almacenamiento del índice de búsqueda.
  • PERMANENTLY DISABLED: Hay un cambio de esquema incompatible en la tabla base, como cambiar el tipo de una columna indexada de STRING a INT64.
index_status_details RECORD El registro contiene los siguientes campos:
  • throttle_status: Indica el estado de limitación del índice de búsqueda. Los valores posibles son los siguientes:
    • UNTHROTTLED: El índice se puede usar.
    • BASE_TABLE_TOO_SMALL: El tamaño de la tabla base es inferior a 10 GB. Este límite se aplica independientemente de si usas tu propia reserva para los trabajos de administración de índices. En este caso, el índice se inhabilita temporalmente y las búsquedas no lo usan.
    • BASE_TABLE_TOO_LARGE: El tamaño de la tabla base supera el límite de tu organización.
    • ORGANIZATION_LIMIT_EXCEEDED: El tamaño total de las tablas base indexadas en tu organización supera el límite de tu organización.
  • message: Es un mensaje detallado que describe el estado del índice.
use_background_reservation BOOL Indica si el mantenimiento del índice usa la reserva de BACKGROUND. Se establece en FALSE cuando el mantenimiento del índice usa el límite.

Permiso y sintaxis

Las consultas realizadas a esta vista deben incluir un calificador de región. En la siguiente tabla, se explica el permiso de la región para esta vista:

Nombre de la vista Permiso del recurso Permiso de la región
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION Organización que contiene el proyecto especificado REGION

Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: ID de tu proyecto deGoogle Cloud . Si no se especifica, se usa el proyecto predeterminado.

  • REGION: Es la región de tu proyecto. Por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Limitación de la indexación

Si se limita un índice, el tamaño de su tabla no se incluye en el límite de tu organización. Esta limitación se produce cuando el tamaño de la tabla base es inferior a 10 GB o supera el límite de tu organización. Cuando se limita un índice, se pausan sus trabajos de administración, lo que provoca que el índice quede desactualizado y, finalmente, se inhabilite de forma temporal. En consecuencia, las búsquedas no pueden usar el índice.

Ejemplos

En esta sección, se incluyen ejemplos de consultas de la vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Comprueba si el consumo supera el límite en una región determinada

En el siguiente ejemplo, se ilustra si el tamaño total de la tabla base indexada en una organización, que utiliza ranuras compartidas dentro de la multirregión de EE.UU., supera los 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

El resultado es similar al siguiente:

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

Encuentra el tamaño total de las tablas base indexadas por proyectos en una región

En el siguiente ejemplo, se muestra el desglose de cada proyecto en una región múltiple de EE.UU. con el tamaño total de las tablas básicas indexadas:

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

El resultado es similar al siguiente:

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

Cómo encontrar índices de búsqueda con limitación

En el siguiente ejemplo, se muestran todos los índices de búsqueda que están sujetos a limitación dentro de la organización y la región:

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

El resultado es similar al siguiente:

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