Ranuras

Una ranura de BigQuery es una CPU virtual que usa BigQuery para ejecutar consultas de SQL. BigQuery calcula de forma automática cuántas ranuras necesita cada consulta según su tamaño y complejidad.

Puedes usar un modelo de precios según demanda o uno de tasa fija. Ambos usan ranuras para el procesamiento de datos. El modelo de tasa fija 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 utilizan el modelo de precios de tasa fija eligen explícitamente la cantidad de ranuras que deben reservarse. 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 en el modelo de precios según demanda de BigQuery están sujetos a la cuota de ranuras por proyecto con capacidad de pico de actividad transitorio. Para la mayoría de los usuarios del modelo según demanda encuentra la capacidad de ranuras predeterminada más que suficiente. Según la carga de trabajo, el acceso a más ranuras mejora el rendimiento de las consultas o el rendimiento de las consultas. Para verificar cuántas ranuras usa tu cuenta, consulta Supervisión de BigQuery.

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 aprovecha 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 analizó con más detalle en otra documentación.

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 aprovechar 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 SQL de BigQuery 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 solo 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. Quedarán 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. Quedarán 400 unidades de trabajo en cola.
  5. Y así sucesivamente.

Programación de ranuras

Ranuras de BigQuery en cola si la demanda supera la disponibilidad

Programación equilibrada en BigQuery

BigQuery aprovecha la programación equilibrada para asignar recursos entre las consultas que compiten. Esto significa que cada consulta tiene igual 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.