Indexación de metadatos de 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 de los índices 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 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 por su parte. Sin embargo, la actualización del índice depende de los recursos gratuitos disponibles y no tiene objetivos de nivel de servicio (SLOs) de rendimiento. Si la actualización del índice es fundamental para tu caso práctico, te recomendamos que configures una BACKGROUNDreserva.

Ver 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 columna LAST_METADATA_INDEX_REFRESH_TIME de la vista INFORMATION_SCHEMA.TABLE_STORAGE. Para ello, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    SELECT
      project_id,
      project_number,
      table_name,
      last_metadata_index_refresh_time
    FROM
      [PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud . Si no se especifica, se usa el proyecto predeterminado.
    • REGION: la región en la que se encuentra el proyecto. Por ejemplo, region-us.
  3. Haz clic en Ejecutar.

Ver el uso del índice de metadatos de columnas

Para ver si se ha usado el índice de metadatos de la columna una vez completada una tarea, consulta la propiedad TableMetadataCacheUsage del recurso Job. Si el campo unusedReason está vacío (no se ha rellenado), se ha usado el índice de metadatos de la columna. Si se rellena, el campo explanation proporciona el motivo por el que no se ha usado el índice de metadatos de la columna.

También puede ver el uso del índice de metadatos de columnas con el campo metadata_cache_statistics de la vista INFORMATION_SCHEMA.JOBS.

Por ejemplo, se muestra el uso del índice de metadatos de la columna del trabajo my-job:

SELECT metadata_cache_statistics
FROM `region-US`.INFORMATION_SCHEMA.JOBS
WHERE job_id = 'my-job';

Otro ejemplo: a continuación se muestra el número de trabajos que han usado el índice de metadatos de la columna de 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;

Configurar recursos de indexación dedicados

Para configurar los recursos de las actualizaciones de indexación de metadatos en tu proyecto, primero debes tener una reserva asignada a tu proyecto. Para ello, haz lo siguiente:

  1. Crea una BACKGRONDreserva.
  2. Asigna tu proyecto a la reserva.

Después de configurar la 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 asignes de esta forma se comparten con otras tareas si están inactivas. Para obtener más información, consulta la sección Ranuras inactivas.

Consola

  1. En la Google Cloud consola, ve a la página Gestión de capacidad.

    Ir a Gestión de la capacidad

  2. Haz clic en Acciones de reserva > Crear asignación.

  3. Selecciona el proyecto de reserva.

  4. En Tipo de tarea, selecciona En segundo plano.

  5. 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

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto de administración que tiene el recurso de reserva.
  • LOCATION: la ubicación de la reserva.
  • RESERVATION_NAME: el nombre de la reserva.
  • PROJECT_ID: el ID del proyecto que se asignará a esta reserva.

SQL

Para asignar una reserva a un proyecto, usa la declaración de DDL CREATE ASSIGNMENT.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    CREATE ASSIGNMENT
    ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
    OPTIONS (
      assignee = 'projects/PROJECT_ID',
      job_type = 'BACKGROUND');
    Sustituye lo siguiente:

    • ADMIN_PROJECT_ID: el ID del proyecto de administración que tiene el recurso de reserva.
    • LOCATION: la ubicación de la reserva.
    • RESERVATION_NAME: el nombre de la reserva.
    • ASSIGNMENT_ID: el ID de la tarea. El ID debe ser único en el proyecto y la ubicación, empezar y terminar con una letra minúscula o un número, y contener solo letras minúsculas, números y guiones.
    • PROJECT_ID: el ID del proyecto que contiene las tablas. Este proyecto está asignado a la reserva.
  3. Haz clic en Ejecutar.

Ver información de un trabajo de indexación

Una vez que hayas configurado tus trabajos de indexación dedicados, puedes ver información sobre ellos con la vista JOBS. En el siguiente ejemplo de SQL se muestran los cinco trabajos de actualización más recientes de 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;

Sustituye PROJECT_NAME por el nombre del proyecto que contiene tus trabajos de indexación de metadatos.

Configurar alertas de indexación de metadatos

El proceso de alertas de Cloud Monitoring te avisa cuando el rendimiento de BigQuery no cumple los criterios definidos. Para obtener más información, consulta el resumen de las alertas. Con la indexación de metadatos, puedes configurar alertas para el uso de las ranuras y la obsolescencia.

Alerta de uso de ranuras

Esta alerta te avisa cuando tu reserva en segundo plano supera un porcentaje definido de su asignación. El valor predeterminado es 95%. Puedes configurar esta alerta para una reserva específica o para todas las reservas en segundo plano. Cuando se active esta alerta, le recomendamos que aumente el tamaño de su reserva.

Para configurar esta alerta para todas las reservas en segundo plano, haz lo siguiente:

  1. Configura un canal de notificaciones de monitorización si aún no lo has hecho.
  2. Ve a la página Integraciones.

    Ir a Integraciones

  3. Busca la integración de BigQuery y haz clic en Ver detalles.

  4. En la pestaña Alertas, selecciona Uso de ranuras - Uso de ranuras de caché de metadatos en segundo plano demasiado alto.

  5. Opcional: Para personalizar aún más esta alerta, haz clic en Mostrar opciones > Personalizar política de alertas.

  6. En Configurar notificaciones, selecciona el canal de notificaciones.

  7. Haz clic en Crear.

Alerta de obsolescencia

Esta alerta te avisa cuando la obsolescencia media del índice de metadatos de las columnas aumenta demasiado en comparación con la media actual. El umbral predeterminado es si la media de las últimas 4 horas es más del doble de la media anterior durante más de 30 minutos. Cuando se active esta alerta, le recomendamos que aumente el tamaño de su reserva o que cree una reserva de fondo si no tiene ninguna.

Para configurar esta alerta, haz lo siguiente:

  1. Configura un canal de notificaciones de monitorización si aún no lo has hecho.
  2. Ve a la página Integraciones.

    Ir a Integraciones

  3. Busca la integración de BigQuery y haz clic en Ver detalles.

  4. En la pestaña Alertas, seleccione Obsoleto del índice de metadatos de columna: aumento porcentual excesivo.

  5. Opcional: Para personalizar aún más esta alerta, haz clic en Mostrar opciones > Personalizar política de alertas.

  6. En Configurar notificaciones, selecciona el canal de notificaciones.

  7. Haz clic en Crear.

Limitaciones

Las mejoras de 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 mejorarán con la indexación de metadatos.

Siguientes pasos