Vista SEARCH_INDEXES_BY_ORGANIZATION

Los índices de búsqueda de BigQuery ofrecen gestió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 ver el consumo actual en relación con ese límite, desglosado por proyectos y tablas. La vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATIONcontiene una fila por cada índice de búsqueda de toda la organización asociada al proyecto actual.

Permisos obligatorios

Para consultar la vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION, necesitas los siguientes permisos de gestión de identidades y accesos (IAM) en tu organización:

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

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos 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 los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.

Esquema

La vista INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
project_id STRING Nombre del proyecto que contiene el conjunto de datos.
project_number STRING El número del proyecto que contiene el conjunto de datos.
index_catalog STRING Nombre del proyecto que contiene el conjunto de datos.
index_schema STRING Nombre del conjunto de datos que contiene el índice.
table_name STRING Nombre de la tabla base en la que se crea el índice.
index_name STRING 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 se está creando.
  • PENDING DISABLEMENT: el tamaño total de las tablas base indexadas supera el límite de tu organización. El índice se ha puesto en cola para su eliminación. Mientras se encuentre en este estado, el índice se puede usar en las consultas de búsqueda y se le cobrará por el almacenamiento del índice de búsqueda.
  • TEMPORARILY DISABLED: o bien el tamaño total de las tablas base indexadas supera el límite de tu organización, o bien la tabla base indexada es inferior a 10 GB. Mientras se encuentre en este estado, el índice no se usará en las consultas de búsqueda y no se te cobrará 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 tanto si usas tu propia reserva para las tareas de gestión de índices como si no. En este caso, el índice se inhabilita temporalmente y las consultas de búsqueda 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 de tu organización supera el límite de tu organización.
  • message: mensaje detallado que describe el estado del índice.
use_background_reservation BOOL Indica si el mantenimiento del índice usa la reserva BACKGROUND. Se define como FALSE cuando el mantenimiento del índice usa el límite.

Ámbito y sintaxis

Las consultas en esta vista deben incluir un calificador de región. En la siguiente tabla se explica el ámbito de la región de esta vista:

Nombre de la vista Ámbito de los recursos Ámbito de la región
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION Organización que contiene el proyecto especificado REGION

Haz los cambios siguientes:

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

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

Limitación de índice

Si se limita el uso de un índice, el tamaño de su tabla no se tiene en cuenta 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 el uso de un índice, se pausan sus tareas de gestión, lo que provoca que el índice quede obsoleto y, finalmente, se inhabilite temporalmente. Por lo tanto, las consultas de búsqueda no pueden usar el índice.

Puedes configurar alertas para recibir notificaciones cuando se supere un determinado umbral, de forma similar a configurar alertas para consultas programadas. Por ejemplo, configura una alerta cuando el tamaño de la tabla supere el 70% del límite de la cuota para tener tiempo de tomar medidas.

Ejemplos

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

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

En el siguiente ejemplo se muestra qué ocurre si el tamaño total de la tabla base indexada de una organización que utiliza slots compartidos en 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 |
+---------------------+

Buscar el tamaño total de la tabla base indexada por proyectos en una región

En el siguiente ejemplo se muestra el desglose de cada proyecto de una multirregión de EE. UU. con el tamaño total de las tablas base 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 |
+---------------------+----------------------------+---------------------+

Buscar índices de búsqueda limitados

En el siguiente ejemplo se devuelven todos los índices de búsqueda que tienen limitaciones de frecuencia en 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      |
+--------------------+--------------------+---------------+----------------+