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