Slots

Ein BigQuery-Slot ist eine virtuelle CPU, die von BigQuery zum Ausführen von SQL-Abfragen verwendet wird. BigQuery berechnet automatisch je nach Größe und Komplexität der Abfrage, wie viele Slots für jede Abfrage erforderlich sind.

Sie können zwischen einem On-Demand-Preismodell oder einem Pauschalpreismodell wählen. Beide verwenden Slots für die Datenverarbeitung. Das Pauschalpreismodell ermöglicht Ihnen die explizite Kontrolle über Slots und Analysekapazität, während das On-Demand-Modell nicht funktioniert.

Kunden, die das Pauschalpreismodell verwenden, müssen explizit auswählen, wie viele Slots zu reservieren sind. Ihre Abfragen werden innerhalb dieser Kapazität ausgeführt und Sie bezahlen für jede bereitgestellte Sekunde kontinuierlich. Wenn Sie beispielsweise 2.000 BigQuery-Slots erwerben, können Ihre Abfragen insgesamt zusammen auf 2.000 virtuelle CPUs beschränkt werden. Sie haben diese Kapazität, bis Sie sie löschen. Außerdem zahlen Sie 2.000 Slots,bis Sie sie löschen.

Projekte nach dem On-Demand-Preismodell von BigQuery unterliegen einem Pro-Projekt-Slot-Kontingent mit vorübergehender Burst-Funktion. Die meisten Nutzer des On-Demand-Modells finden die Standard-Slot-Kapazität mehr als ausreichend. Je nach Arbeitslast wird durch den Zugriff auf mehr Slots die Abfrageleistung und/oder Abfrageleistung verbessert. Informationen über die Anzahl der von Ihrem Konto genutzten Slots finden Sie unter BigQuery-Monitoring.

Abfrage mit Slots ausführen

Bei der Ausführung eines Abfragejobs in BigQuery wird die deklarative SQL-Anweisung in einen Ausführungsgraphen umgewandelt. Dieser wird in mehrere Abfragephasen aufgeteilt, die sich wiederum aus detaillierten Ausführungsschritten zusammensetzen. BigQuery nutzt zum Ausführen dieser Abfragen eine stark verteilte parallele Architektur. In den Phasen werden dabei die Arbeitseinheiten modelliert, die viele potenzielle Worker parallel ausführen können. Über eine schnelle verteilte Shuffle-Architektur kommunizieren die Phasen miteinander. Die Shuffle-Architektur wird an anderer Stelle ausführlicher erläutert.

Das Ausführen von Abfragen erfolgt in BigQuery dynamisch. Das bedeutet, der Abfrageplan kann sich während einer laufenden Abfrage ändern. Häufig werden bei der Ausführung einer Abfrage Phasen eingeführt, um die Datenverteilung auf die Worker der Abfrage zu verbessern.

BigQuery kann mehrere Phasen gleichzeitig ausführen. BigQuery kann eine spekulative Ausführung nutzen, um eine Abfrage zu beschleunigen, und eine Phase dynamisch neu partitionieren, um eine optimale Parallelisierung zu erzielen.

In jeder Phase der Abfrage werden die einzelnen Arbeitseinheiten von BigQuery-Slots ausgeführt. Wenn BigQuery beispielsweise feststellt, dass der optimale Parallelisierungsfaktor einer Phase 10 beträgt, fordert es 10 Slots an, um diese Phase zu verarbeiten.

Abfrageslots.

Eine BigQuery-SQL-Abfrage ist ein dynamischer DAG

Abfragen entsprechend der Slotressourcen ausführen

Wenn eine Abfrage mehr Slots benötigt als verfügbar sind, stellt BigQuery einzelne Arbeitseinheiten in die Warteschlange und wartet auf verfügbare Slots. Während der Ausführung der Abfragen werden diese zurückgestellten Arbeitseinheiten dynamisch für die Ausführung ausgewählt.

BigQuery kann für eine bestimmte Phase einer Abfrage eine beliebige Anzahl an Slots anfordern. Die Anzahl der angeforderten Slots hat nichts mit der Kapazität zu tun, die Sie erwerben, sondern weist eher auf den optimalen Parallelisierungsfaktor hin, den BigQuery für diese Phase ausgewählt hat. Arbeitseinheiten werden in die Warteschlange aufgenommen und ausgeführt, sobald Slots verfügbar werden.

Überschreiten Abfrageanforderungen die von Ihnen erworbenen Slots, werden Ihnen keine zusätzlichen Slots in Rechnung gestellt und Ihnen wird kein zusätzlicher On-Demand-Preis berechnet. Stattdessen werden Ihre Arbeitseinheiten einfach in die Warteschlange verschoben.

Beispiel:

  1. In einer Abfragephase werden 2.000 Slots angefordert, es sind jedoch nur 1.000 verfügbar.
  2. BigQuery nutzt alle 1.000 Slots, während die verbleibenden Arbeitseinheiten in der Warteschlange auf die übrigen 1.000 Slots warten.
  3. Ist die Arbeit von 100 Slots abgeschlossen, werden diese dynamisch an 100 Arbeitseinheiten von den 1.000 Arbeitseinheiten in der Warteschlange vergeben. 900 Arbeitseinheiten verbleiben in der Warteschlange.
  4. Ist danach die Arbeit von 500 weiteren Slots erledigt, werden 500 Arbeitseinheiten dieser 900 Arbeitseinheiten dynamisch aus der Warteschlange genommen. 400 Arbeitseinheiten verbleiben in der Warteschlange.
  5. Und so weiter.

Slotplanung.

BigQuery-Slots in der Warteschlange – der Bedarf übersteigt die Verfügbarkeit

Faire Planung in BigQuery

BigQuery nutzt faire Planung, um den verschiedenen Abfragen Ressourcen zuzuweisen. Das heißt, dass jede Abfrage jederzeit den gleichen Zugriff auf alle verfügbaren Slots hat und dass die Kapazität dynamisch und automatisch zwischen den aktiven Abfragen neu zugewiesen wird, wenn sich die Kapazitätsanforderungen der Abfragen ändern. Unter den folgenden Bedingungen werden Abfragen abgeschlossen und neue Abfragen zur Ausführung gesendet:

  • Wenn eine neue Abfrage gesendet worden ist, wird die Kapazität automatisch neu an die ausgeführten Abfragen zugewiesen. Einzelne Arbeitseinheiten können unterbrochen, fortgesetzt und in die Warteschlange aufgenommen werden, je nachdem, wie viel Kapazität für die einzelnen Abfragen zur Verfügung steht.
  • Sobald eine Abfrage abgeschlossen worden ist, wird die von dieser Abfrage genutzte Kapazität für alle anderen Abfragen verfügbar.
  • Wenn sich die Kapazitätsanforderungen einer Abfrage aufgrund von Änderungen im dynamischen DAG der Abfrage ändern, bewertet BigQuery die Kapazitätsverfügbarkeit für diese und alle anderen Abfragen automatisch neu. Wenn nötig, werden Slots neu zugewiesen oder unterbrochen.

Planung mehrerer Abfragen.

Faire Planung in BigQuery

Je nach Komplexität und Größe benötigt eine Abfrage eventuell nicht alle Slots, die ihr zustehen, oder sie benötigt mehr. BigQuery stellt unter Beachtung der fairen Planung dynamisch sicher, dass alle Slots jederzeit voll genutzt werden können.