Soluciona problemas relacionados con la administración de cargas de trabajo de BigQuery

En este documento, se muestra cómo solucionar problemas habituales relacionados con la administración de cargas de trabajo de BigQuery, como la asignación y las asignaciones de reservas, los errores de configuración de reservas, los compromisos de capacidad, la contención de ranuras y la supervisión de reservas.

Para ver y administrar las reservas, los compromisos y los gráficos de recursos administrativos, asegúrate de tener los roles de Identity and Access Management (IAM) necesarios, como el rol de Visualizador de recursos de BigQuery (roles/bigquery.resourceViewer) o el rol de Administrador de recursos de BigQuery (roles/bigquery.resourceAdmin) en el proyecto de administración. Para obtener más información, consulta Control de acceso con IAM.

Soluciona problemas con las reservas

Usa la siguiente información para solucionar problemas habituales con las reservas, como errores al agregar ranuras, por qué no se usa una reserva para un trabajo de BigQuery o reservas no reconocidas.

No se pueden agregar más ranuras al tamaño de la reserva

Si recibes errores como Failed to allocate slots for reservation in the current system state o Failed to update reservation: Failed to allocate slots for reservation cuando intentas agregar más espacios a tu reserva, suele tratarse de un problema transitorio. Para mitigar el problema, haz lo siguiente:

  • Vuelve a intentarlo con una cantidad menor de espacios.
  • Si el intento con una cantidad menor de espacios falla, espera 15 minutos y vuelve a intentarlo.

Si después de varios intentos y de esperar 30 minutos sigues recibiendo el mismo error, comunícate con Atención al cliente de Cloud.

No hay suficiente cuota para completar esta solicitud

Si el mensaje de error indica There is insufficient quota to complete this request, la solicitud supera el límite de cuota establecido para el proyecto.

Para resolver este error, realiza una de las siguientes acciones:

  • Agrega una cantidad menor de ranuras a la reserva para que la solicitud no exceda el límite de cuota.
  • Solicita un aumento de cuota en la región correspondiente. Para obtener más información, consulta Solicita un aumento de la cuota.

Reserva que BigQuery no usa para ejecutar un trabajo

Existen varias situaciones en las que un trabajo podría ejecutarse con precios a pedido o un grupo de ranuras compartido gratuito en lugar de usar la reserva que creaste.

La búsqueda y la reserva se encuentran en regiones diferentes

Las reservas son recursos regionales. Una consulta se ejecuta en la misma ubicación que las tablas a las que se hace referencia en ella.

Si la ubicación de una tabla no coincide con la de la reserva, la consulta no usa la reserva y, en cambio, se ejecuta con precios según demanda (o el grupo de ranuras compartido gratuito para los trabajos de carga y exportación por lotes aptos).

Cómo consultar tablas de BigQuery Omni

Cuando consultes una tabla de BigQuery Omni, asegúrate de crear la reserva en la misma región que la tabla, no en una región ubicada en la misma ubicación. Si creas la reserva en la región de BigQuery ubicada en el mismo lugar, la consulta se ejecutará con precios según demanda.

Se creó la reserva, pero no se le asignó el proyecto

Para usar las ranuras en una reserva, debes crear una asignación que asigne el proyecto, la carpeta o la organización a la reserva específica. Asegúrate de que el proyecto tenga una asignación para la reserva correspondiente.

No coincide el tipo de trabajo

Asegúrate de seleccionar el tipo de trabajo correcto cuando crees una asignación. De lo contrario, los trabajos no usarán la reserva.

Por ejemplo, si seleccionas PIPELINE como el tipo de trabajo, todos los trabajos de consulta se ejecutarán con precios según demanda. Cambia el tipo de asignación a QUERY para que los trabajos de consulta se ejecuten con la reserva.

Consultas de varias declaraciones

Si ejecutas consultas de varias instrucciones, el objeto de trabajo principal no tendrá una reserva asociada, incluso si los trabajos secundarios se ejecutan bajo una reserva.

Para confirmar si el trabajo realmente usó una reserva, verifica los metadatos del trabajo secundario.

Cómo recuperar resultados almacenados en caché

Cuando un trabajo de consulta recupera resultados almacenados en caché, el campo de reserva está vacío porque BigQuery no realiza ningún cálculo y recupera los resultados directamente de la tabla temporal.

Operaciones de modificación de filas de captura de datos modificados

Si tienes tablas de captura de datos modificados (CDC), BigQuery aplica las modificaciones de filas pendientes dentro del intervalo max_staleness como trabajos en segundo plano que usan el tipo de asignación BACKGROUND. Si no hay asignaciones de BACKGROUND, estos trabajos usan precios a pedido. Considera crear una asignación de BACKGROUND para el proyecto y evitar costos inesperados según demanda. Puedes identificar estos trabajos por la subcadena queueworker_cdc_background_merge_coalesce en el identificador del trabajo.

Tipos de modelos de BigQuery ML que usan servicios externos

Si no se encuentra ninguna asignación de reserva con un tipo de trabajo ML_EXTERNAL en el proyecto, los trabajos de creación de modelos externos se ejecutan con precios según demanda. La asignación del tipo de trabajo QUERY se aplica a los modelos estándar de BigQuery ML y a los modelos de factorización de matrices (que requieren una reserva de la edición Enterprise o Enterprise Plus), mientras que los modelos externos requieren una asignación ML_EXTERNAL. Para obtener más información, consulta Asigna ranuras a las cargas de trabajo de BigQuery.

Reservas no reconocidas identificadas en el proyecto

BigQuery posee reservas que representan un grupo de ranuras compartidas gratuitas para ciertas operaciones en BigQuery.

default-pipeline

De forma predeterminada, la carga o exportación por lotes de datos en BigQuery usa un grupo de ranuras compartidas gratuito. Cuando inspeccionas estos trabajos de carga o extracción, el campo de reserva muestra default-pipeline.

No se aplican cargos por usar el grupo de ranuras compartidas. Si deseas un rendimiento constante y predecible, considera comprar una reserva de PIPELINE.

Soluciona problemas relacionados con las tareas de administración de reservas

Es posible que surjan los siguientes errores cuando crees o actualices una reserva.

El tamaño de la reserva o las ranuras del modelo de referencia deben ser múltiplos de 50.

Mensaje de error

  • Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.
  • Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.

Causa

Las ranuras siempre se ajustan automáticamente a un múltiplo de 50. BigQuery aumenta la cantidad de ranuras según el uso real y redondea el resultado al incremento de 50 ranuras más cercano. Cuando no hay compromiso o si el compromiso no puede cubrir los aumentos, solo puedes aumentar las ranuras del modelo de referencia y del ajuste de escala automático en múltiplos de 50.

Si baseline slots o max reservation size - baseline slots no son múltiplos de 50 (y no están cubiertos por compromisos de capacidad excedente), la reserva no se puede escalar verticalmente hasta el tamaño máximo de reserva, lo que genera este error.

Solución

Realiza una de las siguientes acciones:

  • Compra más compromisos de capacidad para cubrir los aumentos de ranuras.
  • Elige ranuras base y máximas que sean incrementos de 50.

Soluciona problemas relacionados con los compromisos de capacidad

En esta sección, se describen los pasos para solucionar problemas que pueden resultarte útiles si tienes problemas con los compromisos de capacidad de BigQuery.

Las ranuras compradas están pendientes

Las ranuras están sujetas a la capacidad disponible. Cuando compras compromisos de ranuras y BigQuery los asigna, la columna Estado muestra una marca de verificación. Si BigQuery no puede asignar las ranuras solicitadas de inmediato, la columna Estado permanece pendiente. Es posible que tengas que esperar varias horas para que haya ranuras disponibles. Si necesitas acceder a las ranuras con anterioridad, prueba los siguientes pasos:

  1. Borra el compromiso pendiente.
  2. Compra un compromiso nuevo con una cantidad menor de ranuras. Según la capacidad, el compromiso más pequeño podría activarse de inmediato.
  3. Compra las ranuras restantes como un compromiso independiente. Estas ranuras podrían mostrarse como pendientes en la columna Estado, pero suelen activarse en pocas horas.
  4. Opcional: Cuando ambos compromisos se activen, combínalos en uno solo, siempre que ambos compromisos estén en la misma región y edición, y tengan el mismo plan de compromiso.

Si un compromiso de ranura falla o tarda mucho en completarse, considera usar los precios a pedido de forma temporal. Con esta solución, puedes ejecutar consultas críticas en un proyecto diferente que no esté asignado a ninguna reserva, asignar el proyecto a None o quitar la asignación del proyecto por completo.

Soluciona problemas de contención de ranuras

La contención de ranuras puede ocurrir cuando no hay suficientes ranuras para ejecutar todos tus trabajos, lo que genera problemas de rendimiento. Para analizar si la degradación del rendimiento se debe a aumentos en la carga de trabajo o a cambios en la configuración del entorno, puedes comparar dos intervalos del sistema en las reservas y los proyectos.

Para solucionar problemas de contención de ranuras, sigue estos pasos y prácticas recomendadas.

Si probaste estas prácticas recomendadas, pero sigues teniendo problemas de rendimiento, puedes solicitar asistencia.

Picos de simultaneidad de trabajos

Usa la vista detallada en los gráficos de recursos administrativos para verificar si hay un aumento repentino en las ejecuciones de trabajos con picos simultáneos en el uso de ranuras. Estos picos pueden indicar que demasiados trabajos compiten por las ranuras disponibles en tu reserva.

Práctica recomendada: Considera optimizar las consultas que consumen muchos recursos o aumentar la capacidad de ranuras de tu reserva. Para obtener más información sobre la optimización del rendimiento de las consultas, consulta Optimiza el procesamiento de las consultas.

Uso elevado de ranuras

Usa la vista detallada para verificar si hay aumentos en la duración de los trabajos, en especial si hay trabajos que superan la capacidad máxima de tu reserva. Un uso de ranuras constantemente alto puede indicar una contención de ranuras en curso.

Práctica recomendada: Verifica las consultas con el filtro de contención de ranuras del explorador de trabajos para identificar las consultas que consumen más ranuras y optimizarlas.

Duraciones de trabajo prolongadas

Si los trabajos tardan mucho más en completarse, consulta la vista detallada. Los picos altos de simultaneidad de trabajos y uso de ranuras pueden indicar contención de ranuras.

Práctica recomendada: Aísla los trabajos críticos pausando temporalmente los trabajos menos importantes o reduciendo la tasa general de envío de trabajos.

Mensajes de contención de ranuras

En la tabla de estadísticas, se pueden mostrar mensajes como There were NUMBER jobs detected with slot_contention in the reservation. que indican problemas de contención de ranuras. Consulta el explorador de trabajos para revisar los detalles sobre los trabajos específicos marcados en estos mensajes.

Práctica recomendada: Optimiza las consultas identificadas o ajusta la asignación de intervalos de tu reserva.

Soluciona problemas de supervisión de reservas

En las siguientes secciones, se describe cómo resolver problemas habituales cuando se supervisan las reservas de BigQuery y el uso de ranuras.

Las métricas de uso de ranuras no coinciden con INFORMATION_SCHEMA

Si encuentras discrepancias entre las métricas de uso de ranuras en los gráficos de recursos y los datos de INFORMATION_SCHEMA, intenta lo siguiente:

  • Reduce el nivel de detalle. Cambia el nivel de detalle del gráfico a intervalos de 1 segundo en lugar de intervalos de 1 hora.
  • Alinea la agregación. Asegúrate de usar métodos de agregación que se alineen entre los gráficos de recursos y los datos de INFORMATION_SCHEMA. Por ejemplo, para reflejar mejor el uso máximo en los gráficos de recursos, cambia la agregación de métricas a p99 o p90 de forma coherente.

Las ranuras prestadas aparecen cuando se inhabilitan las ranuras inactivas

Es posible que tus gráficos de supervisión muestren un valor distinto de cero para borrowed_slots incluso si ignore_idle_slots=true está configurado para una o más reservas. Este parámetro de configuración impide que una reserva tome prestadas ranuras inactivas, pero no que preste sus ranuras sin usar a otras reservas.

Estas posiciones prestadas aparecen en los siguientes casos:

  • Préstamo a otras reservas: Una reserva con ignore_idle_slots=true puede prestar sus ranuras de modelo de referencia sin usar a otras reservas en el mismo proyecto de administración, región y edición que permitan el préstamo de ranuras inactivas (ignore_idle_slots=false). Si todas las reservas en un proyecto de administración, región y edición tienen ignore_idle_slots=true, no se comparten las ranuras inactivas entre ellas.

    Por ejemplo, supongamos que la reserva A tiene 100 ranuras, 0 de uso y está configurada con ignore_idle_slots=true. La reserva B se encuentra en el mismo proyecto, región y edición de administración, tiene 100 ranuras, necesita 150 ranuras para su carga de trabajo y está configurada con ignore_idle_slots=false. La reserva B puede tomar prestadas 50 ranuras inactivas de la reserva A para satisfacer sus necesidades. Cuando esto ocurre, los gráficos de supervisión registran 50 lent_slots para la reserva A y 50 borrowed_slots para la reserva B.

  • Uso que supera la capacidad. Si el uso de ranuras de una reserva supera temporalmente su capacidad (modelo de referencia + ranuras con ajuste de escala automático), los gráficos de supervisión muestran esta diferencia como borrowed_slots. Este comportamiento puede ocurrir incluso en reservas con ignore_idle_slots=true.

En ocasiones, el uso de ranuras puede exceder la suma del modelo de referencia y las ranuras a gran escala. No se te cobrará por el uso de ranuras que sea mayor que tu modelo de referencia, más las ranuras escaladas.

Las ranuras prestadas aparecen antes de que se use por completo una reserva

Los paneles de supervisión usan datos muestreados, que podrían no reflejar con precisión el momento exacto del uso de la ranura dentro de un intervalo de muestreo.

Para obtener un análisis más preciso del uso de las ranuras, consulta las columnas relacionadas con las ranuras inactivas, como las columnas borrowed_slots y lent_slots en la vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE.

¿Qué sigue?