Slots

Um slot do BigQuery é uma CPU virtual usada pelo BigQuery para executar consultas SQL. O BigQuery calcula automaticamente quantos slots são necessários para cada consulta, dependendo do tamanho e da complexidade.

Escolha entre usar um modelo de preços sob demanda ou um modelo de preços fixos. Ambos usam slots para processamento de dados. O modelo de taxa fixa oferece controle explícito sobre slots e capacidade de análise, enquanto o modelo sob demanda não.

Os clientes no modelo de preço fixo escolhem explicitamente quantos slots reservar. Suas consultas são executadas dentro dessa capacidade, e você paga por essa capacidade continuamente a cada segundo que ela é implantada. Por exemplo, se você comprar 2.000 slots do BigQuery, suas consultas agregadas serão limitadas a usar 2.000 CPUs virtuais a qualquer momento. Você terá essa capacidade até excluí-la e pagará por 2.000 slots até excluí-las.

Os projetos no modelo de preços sob demanda do BigQuery estão sujeitos à cota de slot por projeto com capacidade de burst temporário. A maioria dos usuários no modelo sob demanda considera a capacidade de slot padrão mais do que suficiente. Dependendo da carga de trabalho, o acesso a mais slots melhora o desempenho da consulta e/ou o desempenho da consulta. Para verificar quantos slots sua conta usa, confira o monitoramento do BigQuery.

Execução de consultas usando slots

Quando o BigQuery executa um job de consulta, ele converte a instrução SQL declarativa em um gráfico de execução desmembrado em uma série de cenários de consulta que, por sua vez, são compostos por conjuntos mais granulares de etapas de execução. O BigQuery aproveita uma arquitetura paralela altamente distribuída para executar essas consultas. Os cenários modelam as unidades de trabalho que muitos workers em potencial podem executar em paralelo. Eles também se comunicam entre si por meio de uma arquitetura rápida de embaralhamento distribuída, que foi discutida de forma mais detalhada aqui.

A execução da consulta do BigQuery é dinâmica, o que significa que o plano de consulta pode ser modificado enquanto elas estão em andamento. Os cenários que são introduzidos durante a execução de uma consulta costumam ser usados para melhorar a distribuição de dados em todos os workers da consulta.

O BigQuery pode executar vários estágios simultaneamente . O BigQuery pode aproveitar a execução especulativa para acelerar uma consulta. Ele também pode reparticionar dinamicamente um estágio para atingir o carregamento em paralelo ideal.

Os slots do BigQuery executam unidades de trabalho individuais em cada estágio da consulta. Por exemplo, se o BigQuery determinar que o fator de carregamento em paralelo ideal de um cenário é 10, ele solicitará 10 slots para processar esse cenário.

Slots de consulta.

A consulta SQL do BigQuery é um DAG dinâmico

Execução da consulta com economia de recursos de slot

Se uma consulta solicitar mais slots do que o número disponível, o BigQuery coloca unidades de trabalho individuais em fila e espera que os slots fiquem disponíveis. Conforme a execução da consulta avança e libera slots, as unidades de trabalho com filas são selecionadas para execução.

O BigQuery pode solicitar qualquer número de slots para um cenário específico de uma consulta. O número de slots solicitados não está relacionado à quantidade de capacidade adquirida. Ele indica o fator de carregamento em paralelo ideal escolhido pelo BigQuery para cada cenário. As unidades de trabalho são colocadas em fila e executadas conforme os slots ficam disponíveis.

Quando as demandas de consulta excederem os slots confirmados, você não será cobrado por slots adicionais e nem serão cobradas taxas adicionais sob demanda. Suas unidades de trabalho individuais serão enfileiradas.

Por exemplo:

  1. Um cenário de consulta solicita 2.000 slots, mas há apenas 1.000 disponíveis.
  2. O BigQuery consome todos os 1.000 slots e coloca os outros 1.000 em fila.
  3. Na sequência, quando 100 slots terminarem o trabalho, eles selecionarão dinamicamente 100 unidades de trabalho entre as 1.000 unidades de trabalho na fila. 900 unidades de trabalho permanecerão na fila.
  4. Posteriormente, quando 500 slots terminarem o trabalho, eles selecionarão dinamicamente 500 unidades de trabalho entre as 900 unidades de trabalho na fila. 400 unidades de trabalho permanecerão na fila.
  5. E assim por diante.

Programação de slots.

Os slots do BigQuery são enfileirados quando a demanda excede a disponibilidade

Programação equitativa no BigQuery

O BigQuery usa a programação equitativa para alocar os recursos entre consultas concorrentes. Isso significa que cada consulta tem acesso igual a todos os slots disponíveis a qualquer momento, e a capacidade é realocada de maneira dinâmica e automática entre as consultas ativas à medida que as demandas de capacidade de cada consulta mudam. As consultas são concluídas e novas consultas são enviadas para execução sob as seguintes condições:

  • Sempre que uma nova consulta é enviada, a capacidade é automaticamente realocada entre as consultas em execução. As unidades de trabalho individuais podem ser pausadas, retomadas e enfileiradas sem incidentes à medida que a capacidade disponível aumenta para cada consulta.
  • Sempre que uma consulta é concluída, a capacidade consumida por essa consulta fica automaticamente disponível para o uso de todas as outras.
  • Sempre que as demandas de capacidade de uma consulta mudam devido a alterações no DAG dinâmico dela, o BigQuery reavalia automaticamente a disponibilidade de capacidade para essa e todas as outras consultas, realocando e pausando os slots conforme necessário.

Várias programações de consulta.

Programação equitativa no BigQuery

Dependendo da complexidade e do tamanho, uma consulta pode não demandar todos os slots aos quais ela tem direito ou pode exigir mais. Com esse tipo de programação, o BigQuery garante, de modo dinâmico, que todos os slots sejam totalmente utilizados a qualquer momento.