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_ORGANIZATION
contiene 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:
|
index_status_details |
RECORD |
El registro contiene los siguientes campos:
|
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 | +--------------------+--------------------+---------------+----------------+