Indexación de metadatos para tablas de BigQuery
En este documento, se describe la indexación de metadatos de columnas en BigQuery y se explica cómo asignar recursos dedicados para mejorar la actualización del índice y el rendimiento de las consultas.
BigQuery indexa automáticamente los metadatos de las tablas de BigQuery que superan 1 GiB. Estos metadatos incluyen la ubicación del archivo, la información de partición y los atributos a nivel de la columna, que BigQuery usa para optimizar y acelerar tus consultas.
De forma predeterminada, la indexación de metadatos en BigQuery es una operación en segundo plano gratuita y no requiere ninguna acción de tu parte. Sin embargo, la actualización del índice depende de los recursos gratuitos disponibles y no tiene objetivos de nivel de servicio (SLO) de rendimiento. Si la actualización del índice es fundamental para
tu caso de uso, te recomendamos que configures una
BACKGROUND reserva,
que comparte recursos en trabajos de optimización en segundo plano.
Visualiza la hora de actualización del índice de metadatos
Para ver la última hora de actualización del índice de metadatos de una tabla, consulta la
LAST_METADATA_INDEX_REFRESH_TIME columna de la
INFORMATION_SCHEMA.TABLE_STORAGE vista.
Para ello, sigue estos pasos:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado.REGION: la región en la que se encuentra el proyecto, por ejemplo,region-us.
Haz clic en Ejecutar.
Visualiza el uso del índice de metadatos de columnas
Para ver si se usó el índice de metadatos de columnas después de que se completa un trabajo, verifica
la
TableMetadataCacheUsage propiedad
del recurso Job. Si el campo unusedReason está vacío (no propagado), se usó el índice de metadatos de columnas. Si se propaga, el campo explanation que lo acompaña proporciona un motivo por el que no se usó el índice de metadatos de columnas.
También puedes ver el uso del índice de metadatos de columnas con el
metadata_cache_statistics campo en la
INFORMATION_SCHEMA.JOBS vista.
Por ejemplo, lo siguiente muestra el uso del índice de metadatos de columnas para el trabajo my-job:
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Como otro ejemplo, lo siguiente muestra la cantidad de trabajos que usaron el índice de metadatos de columnas para la tabla my-table:
SELECT COUNT(*) FROM `region-US`.INFORMATION_SCHEMA.JOBS, UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats WHERE stats.table_reference.table_id='my-table' AND stats.table_reference.dataset_id='my-dataset' AND stats.table_reference.project_id='my-project' AND stats.unusedReason IS NULL;
Configura recursos de indexación dedicados
Para configurar recursos para las actualizaciones de indexación de metadatos en tu proyecto, primero debes tener una reserva asignada a tu proyecto. Para ello, sigue estos pasos:
Después de configurar tu reserva, selecciona uno de los siguientes métodos para asignar ranuras a tu trabajo de indexación de metadatos. De forma predeterminada, las ranuras que asignas de esta manera se comparten con otros trabajos si las ranuras están inactivas. Para obtener más información, consulta Ranuras inactivas.
Console
En la Google Cloud consola de, ve a la página Administración de capacidad.
Haz clic en Acciones de reserva > Crear asignación.
Selecciona tu proyecto de reserva.
Establece Tipo de trabajo en Segundo plano.
Haz clic en Crear.
bq
Usa el comando bq mk
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=BACKGROUND \ --assignee_type=PROJECT
Reemplaza lo siguiente:
ADMIN_PROJECT_ID: el ID del proyecto de administración que posee el recurso de reservaLOCATION: la ubicación de la reserva.RESERVATION_NAME: el nombre de la reservaPROJECT_ID: el ID del proyecto que se asignará a esta reserva
SQL
Para asignar una reserva a un proyecto, usa la
CREATE ASSIGNMENT instrucción DDL.
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
Reemplaza lo siguiente:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
ADMIN_PROJECT_ID: el ID del proyecto de administración que posee el recurso de reservaLOCATION: la ubicación de la reserva.RESERVATION_NAMEpor el nombre de la reserva.ASSIGNMENT_ID: el ID de la asignación El ID debe ser único para el proyecto y la ubicación, debe empezar y terminar con una letra minúscula o un número y contener solo letras en minúscula, números y guiones.PROJECT_ID: el ID del proyecto que contiene las tablas Este proyecto está asignado a la reserva.
Haz clic en Ejecutar.
Visualiza la información del trabajo de indexación
Después de configurar tus trabajos de indexación dedicados, puedes ver información
sobre los trabajos de indexación con la
JOBS vista.
En el siguiente ejemplo de SQL, se muestran los cinco trabajos de actualización más recientes en
PROJECT_NAME.
SELECT * FROM region-us.INFORMATION_SCHEMA.JOBS WHERE project_id = 'PROJECT_NAME' AND SEARCH(job_id, '`metadata_cache_refresh`') ORDER BY creation_time DESC LIMIT 5;
Reemplaza PROJECT_NAME por el nombre del proyecto que contiene tus trabajos de indexación de metadatos.
Configura alertas de indexación de metadatos
El proceso de alertas de Cloud Monitoring te notifica cuando el rendimiento de BigQuery no cumple con los criterios definidos. Para obtener más información, consulta Descripción general de alertas. Con la indexación de metadatos, puedes configurar alertas para el uso de ranuras y la inactividad.
Alerta de uso de ranuras
Esta alerta te notifica cuando tu reserva en segundo plano supera un porcentaje definido de su asignación. El valor predeterminado es del 95%. Puedes configurar esta alerta para una reserva específica o para cada reserva en segundo plano. Cuando se activa esta alerta, te recomendamos que aumentes el tamaño de tu reserva.
Para configurar esta alerta para cada reserva en segundo plano, haz lo siguiente:
- Configura un canal de notificaciones de Monitoring si aún no lo hiciste.
Ve a la página Integraciones.
Busca la integración de BigQuery y haz clic en Ver detalles.
En la pestaña Alertas, selecciona Uso de ranuras: el uso de ranuras de caché de metadatos en segundo plano es demasiado alto.
Opcional: Para personalizar aún más esta alerta, haz clic en Mostrar opciones > Personalizar política de alertas.
En Configurar las notificaciones, selecciona tu canal de notificaciones.
Haz clic en Crear.
Alerta de inactividad
Esta alerta te notifica cuando la inactividad promedio del índice de metadatos de columnas aumenta demasiado en comparación con el promedio existente. El umbral predeterminado es si el promedio durante 4 horas es más del doble del promedio anterior durante más de 30 minutos. Cuando se activa esta alerta, te recomendamos que aumentes el tamaño de tu reserva o crees una reserva en segundo plano si no tienes una.
Para configurar esta alerta, haz lo siguiente:
- Configura un canal de notificaciones de Monitoring si aún no lo hiciste.
Ve a la página Integraciones.
Busca la integración de BigQuery y haz clic en Ver detalles.
En la pestaña Alertas, selecciona Inactividad del índice de metadatos de columnas: aumento porcentual demasiado alto.
Opcional: Para personalizar aún más esta alerta, haz clic en Mostrar opciones > Personalizar política de alertas.
En Configurar las notificaciones, selecciona tu canal de notificaciones.
Haz clic en Crear.
Limitaciones
Las mejoras en el rendimiento de las consultas de metadatos solo se aplican a las instrucciones SELECT, INSERT y
CREATE TABLE AS SELECT. Las instrucciones del lenguaje de manipulación de datos (DML) no verán mejoras en la indexación de metadatos.
¿Qué sigue?
- Obtén información para ver todos los trabajos de tu proyecto con la
JOBSvista. - Obtén información para ver la capacidad y el uso de las ranuras.