Información sobre las ranuras

Una ranura de BigQuery es una CPU virtual que usa BigQuery para ejecutar consultas de SQL. Durante la ejecución de la consulta, BigQuery calcula de forma automática cuántas ranuras se requieren para una consulta, según su tamaño y complejidad.

Puedes usar un modelo de precios según demanda o uno basado en la capacidad. Ambos modelos usan ranuras para el procesamiento de datos. Con un modelo basado en la capacidad, puedes pagar por la capacidad de procesamiento de consultas dedicada o con ajuste de escala automático. El modelo basado en la capacidad te brinda un control explícito sobre las ranuras y la capacidad de estadísticas, mientras que el modelo según demanda no lo hace.

Los clientes que usan el modelo de precios basado en la capacidad eligen de forma explícita cuántas ranuras reservar. Tus consultas se ejecutan dentro de esa capacidad y pagas por esa capacidad de forma continua cada segundo que se implementa. Por ejemplo, si compras 2,000 ranuras de BigQuery, tus consultas en conjunto se limitan al uso de 2,000 CPU virtuales en cualquier momento. Tendrás esta capacidad hasta que la borres y pagarás por 2,000 ranuras hasta que las borres.

Los proyectos del modelo de precios según demanda de BigQuery están sujetos a la cuota de ranuras por proyecto con capacidad de aumento de actividad transitorio. Para la mayoría de los usuarios del modelo según demanda, la capacidad de ranuras predeterminada es más que suficiente. Según la carga de trabajo, el acceso a más ranuras mejora el rendimiento de las consultas. Para verificar cuántas ranuras usa tu cuenta, consulta Supervisión de BigQuery.

Estima cuántas ranuras comprar

BigQuery está diseñado para escalar de forma eficiente con más recursos. Según la carga de trabajo, es probable que la capacidad incremental te brinde beneficios adicionales. Por lo tanto, elegir la cantidad óptima de ranuras que debes comprar depende de los requisitos de rendimiento, de capacidad de procesamiento y de utilidad.

Puedes experimentar con ranuras del modelo de referencia y de ajuste de escala automático para determinar la mejor configuración de ranuras. Por ejemplo, puedes probar la carga de trabajo con 500 ranuras del modelo de referencia, luego con 1,000 y, más adelante, con 1,500 y 2,000, y observar el impacto en el rendimiento.

También puedes examinar el uso de ranuras actual de los proyectos, junto con el precio mensual que deseas pagar. Por el momento, las cargas de trabajo según demanda tienen un límite mínimo de 2,000 ranuras, pero es importante verificar cuántas ranuras realmente usan los proyectos con vistas INFORMATION_SCHEMA.JOBS*, Cloud Logging, la API de Jobs o los registros de auditoría de BigQuery. Para obtener más información, consulta Visualiza las ranuras disponibles y las ranuras asignadas.

Línea de tiempo de uso de ranuras.

Después de comprar ranuras y ejecutar tus cargas de trabajo durante al menos siete días, puedes usar el estimador de ranuras para analizar el rendimiento y modelar el efecto de agregar o reducir ranuras. Para obtener más información, consulta Estima los requisitos de capacidad de ranuras.

Ejecución de consultas mediante ranuras

Cuando BigQuery ejecuta un trabajo de consulta, convierte la instrucción declarativa de SQL en un grafo de ejecución dividido en una serie de etapas de consulta que, a su vez, están compuestas por conjuntos de pasos de ejecución más detallados. BigQuery usa una arquitectura en paralelo muy distribuida para ejecutar estas consultas, y las etapas modelan las unidades de trabajo que varios trabajadores potenciales pueden ejecutar en paralelo. Las etapas se comunican entre sí a través de una arquitectura aleatoria de distribución rápida, que se analiza con más detalle en Blog de Google Cloud.

La ejecución de consultas de BigQuery es dinámica, lo que significa que el plan de consultas se puede modificar mientras una de ellas está en tránsito. Las etapas que se ingresan mientras se ejecuta una consulta se suelen usar para mejorar la distribución de datos en todos los trabajadores de consultas.

BigQuery puede ejecutar varias etapas de forma simultánea. BigQuery puede usar la ejecución especulativa para acelerar una consulta y volver a crear particiones dinámicas de una etapa para lograr una paralelización óptima.

Las ranuras de BigQuery ejecutan unidades de trabajo individuales en cada etapa de la consulta. Por ejemplo, si BigQuery determina que el factor de paralelización óptima de una etapa es 10, solicitará 10 ranuras para procesar esa etapa.

Ranuras de consulta

La consulta de GoogleSQL es un DAG dinámico

Ejecución de consultas en ahorro de recursos de ranura

Si una consulta solicita más ranuras que las disponibles actualmente, BigQuery pone en cola las unidades de trabajo individuales y espera a que las ranuras estén disponibles. A medida que se avanza en la ejecución de la consulta y se liberan las ranuras, estas unidades de trabajo en cola se seleccionan de forma dinámica para su ejecución.

BigQuery puede solicitar cualquier cantidad de ranuras para una etapa en particular de una consulta. La cantidad de ranuras solicitadas no está relacionada con la cantidad de capacidad que adquieres, sino que es una indicación del factor de mejor paralelización que elige BigQuery para esa etapa. Las unidades de trabajo se ponen en cola y se ejecutan a medida que van quedando ranuras disponibles.

Cuando la demanda de consultas supere la cantidad de ranuras a las que te comprometiste, no se te cobrará por las ranuras adicionales ni por las tarifas adicionales a pedido. Las unidades de trabajo individuales se ponen en cola.

Por ejemplo,

  1. Una etapa de consulta solicita 2,000 ranuras, pero solo 1,000 están disponibles.
  2. BigQuery consume las 1,000 ranuras y pone en cola el resto.
  3. A partir de esto, si 100 ranuras terminan su trabajo, seleccionan de forma dinámica 100 unidades de trabajo de las 1,000 unidades de trabajo en cola. Quedan 900 unidades de trabajo en cola.
  4. Si 500 ranuras terminan su trabajo, seleccionan de forma dinámica 500 unidades de trabajo de las 900 unidades de trabajo en cola. Quedan 400 unidades de trabajo en cola.

Programación de ranuras

Ranuras de BigQuery en cola si la demanda supera la disponibilidad

Ranuras inactivas

En un momento determinado, es posible que algunas ranuras estén inactivas. Esto puede incluir lo siguiente:

  • Compromisos de ranuras que no están asignados a ninguna reserva.
  • Las ranuras que se asignaron a un modelo de referencia de reserva, pero no se encuentran en uso.

De forma predeterminada, las consultas que se ejecutan en una reserva usan ranuras inactivas de otras reservas dentro del mismo proyecto de administración de forma automática. Esto significa que un trabajo puede ejecutarse siempre que haya capacidad. La capacidad inactiva se interrumpe de inmediato para la reserva asignada original, según sea necesario, sin importar la prioridad de la consulta que necesita los recursos. Esto sucede de forma automática en tiempo real.

Para evitar este comportamiento y asegurarte de que una reserva solo use sus ranuras aprovisionadas, configura ignore_idle_slots como true. Sin embargo, las reservas que tienen ignore_idle_slots configurado como true pueden compartir sus ranuras inactivas con otras reservas.

No puedes compartir ranuras inactivas entre reservas de ediciones diferentes. Solo puedes compartir las ranuras del modelo de referencia o las ranuras confirmadas. Las ranuras con ajuste de escala automático pueden estar disponibles de forma temporal, pero no se pueden compartir porque pueden reducir la escala.

Siempre que ignore_idle_slots sea falso, una reserva puede tener un recuento de ranuras de 0 y aun así tener acceso a las ranuras sin usar. Si solo usas la reserva default, desactiva ignore_idle_slots como práctica recomendada. Luego, puedes asignar un proyecto o una carpeta a esa reserva y solo usará las ranuras inactivas.

Las asignaciones de tipo ML_EXTERNAL son una excepción en cuanto a que las ranuras que usan los trabajos de creación de modelos externos de BigQuery ML que no son interrumpibles. Las ranuras en una reserva con tipos de asignación ML_EXTERNAL y QUERY solo están disponibles para otros trabajos de consulta cuando las tareas ML_EXTERNAL no ocupan las ranuras. Además, estos trabajos no pueden usar ranuras inactivas de otras reservas.

Asignación de ranuras dentro de las reservas

BigQuery asigna la capacidad de ranuras dentro de una sola reserva mediante un algoritmo llamado programación equilibrada.

El programador de BigQuery aplica el uso compartido equitativo de ranuras entre proyectos con consultas en ejecución dentro de una reserva y, luego, dentro de los trabajos de un proyecto determinado. El programador proporciona equidad eventual. Durante períodos breves, algunos trabajos pueden obtener un porcentaje desproporcionado de ranuras, pero el programador lo corregirá con el tiempo. El objetivo del programador es encontrar un equilibrio entre expulsar de forma agresiva las tareas en ejecución (lo que da como resultado una pérdida de tiempo de ranura) y ser demasiado tolerante (lo que da como resultado que los trabajos con tareas de larga duración obtengan un porcentaje desproporcionado de el tiempo de la ranura).

Si un trabajo importante necesita más ranuras de las que recibe del programador con regularidad, considera crear una reserva adicional con una cantidad garantizada de ranuras y asignar el trabajo a esa reserva.

Programación equilibrada en BigQuery

Las ranuras se distribuyen de manera equitativa entre los proyectos y, luego, en los trabajos del proyecto. Esto significa que cada consulta tiene acceso a todas las ranuras disponibles en cualquier momento, y la capacidad se vuelve a asignar de forma dinámica y automática entre las consultas activas a medida que la capacidad de cada consulta exige un cambio. Las consultas completas y nuevas se envían para su ejecución en función de las siguientes condiciones:

  • Cada vez que se envía una consulta nueva, la capacidad se vuelve a asignar de forma automática entre las consultas que se ejecutan. Las unidades de trabajo individuales se pueden detener, reanudar y poner en cola con facilidad a medida que va quedando disponible una mayor capacidad para cada consulta.
  • Cada vez que se completa una consulta, la capacidad que utiliza esa consulta va quedando disponible de forma automática e inmediata para las demás consultas.
  • Cada vez que la capacidad de una consulta exige una modificación debido a los cambios en el DAG dinámico de la consulta, BigQuery vuelve a evaluar de forma automática la capacidad disponible para esta y todas las demás consultas, y vuelve a asignar o detiene las ranuras según sea necesario.

Programación de varias consultas

Programación equilibrada en BigQuery

Según la complejidad y el tamaño, es posible que una consulta no necesite todas las ranuras a las que tiene derecho o que pueda necesitar más. BigQuery garantiza de forma dinámica que, con una programación equilibrada, todas las ranuras se pueden usar en cualquier momento.