Zwischenspeicherung von Abfragen
Das Zwischenspeichern ist ein wichtiges Verfahren zur Verbesserung der Leistung von Data Warehouse-Systemen, da hierdurch vermieden wird, dass dieselben Daten mehrmals neu berechnet oder abgerufen werden müssen. In Databricks SQL kann das Zwischenspeichern die Abfrageausführung erheblich beschleunigen und den benötigten Speicherplatz minimieren, was zu niedrigeren Kosten und einer effizienteren Ressourcennutzung führt. Jede Zwischenspeicherungsebene verbessert die Abfrageleistung, minimiert die Clusternutzung und optimiert die Ressourcennutzung und sorgt so für eine nahtlose Data Warehouse-Erfahrung.
Das Zwischenspeichern bietet zahlreiche Vorteile in Data Warehouses; hierzu zählen:
- Geschwindigkeit: Durch das Speichern von Abfrageergebnissen oder häufig verwendeten Daten im Arbeitsspeicher oder auf anderen schnellen Speichermedien kann das Zwischenspeichern die Ausführungszeiten von Abfragen erheblich reduzieren. Diese Speicherung ist besonders für wiederholte Abfragen von Vorteil, da das System die zwischengespeicherten Ergebnisse schnell abrufen kann, anstatt sie neu berechnen zu müssen.
- Geringere Clusterauslastung: Zwischenspeichern minimiert den Bedarf an zusätzlichen Computeressourcen, da zuvor berechnete Ergebnisse wiederverwendet werden. Dies reduziert die gesamte Warehouse-Uptime und den Bedarf an zusätzlichen Computeclustern, was zu Kosteneinsparungen und einer besseren Ressourcenzuweisung führt.
Abfragecache-Typen in Databricks SQL
Databricks SQL führt verschiedene Arten der Abfragezwischenspeicherung aus.
Databricks SQL-UI-Cache: Das Zwischenspeichern aller Abfrage- und Dashboardergebnisse jedes Benutzers auf der Databricks SQL-Benutzeroberfläche. Wenn Benutzer zum ersten Mal eine Dashboard- oder SQL-Abfrage öffnen, zeigt der Databricks SQL-UI-Cache das neueste Abfrageergebnis an, einschließlich der Ergebnisse aus geplanten Ausführungen.
Der Databricks SQL-UI-Cache verfügt über einen Lebenszyklus von maximal 7 Tagen. Der Cache befindet sich in Ihrem Azure Databricks-Dateisystem in Ihrem Konto. Sie können Abfrageergebnisse löschen, indem Sie die Abfrage, die nicht mehr gespeichert werden soll, erneut ausführen. Nach der erneuten Ausführung werden die alten Abfrageergebnisse aus dem Cache entfernt. Darüber hinaus wird der Cache ungültig, nachdem die zugrunde liegenden Tabellen aktualisiert wurden.
Ergebniscache: Zwischenspeichern von Abfrageergebnissen jedes Clusters für alle Abfragen über SQL-Warehouses. Das Zwischenspeichern von Ergebnissen umfasst sowohl lokale als auch Remoteergebniscaches, die zusammenarbeiten, um die Abfrageleistung zu verbessern, indem Abfrageergebnisse im Arbeitsspeicher oder in Remotespeichermedien gespeichert werden.
- Lokaler Cache: Der lokale Cache ist ein In-Memory-Cache, in dem Abfrageergebnisse für die Lebensdauer des Clusters oder so lange gespeichert werden, bis der Zwischenspeicher voll ist, je nachdem, was zuerst eintritt. Dieser Cache ist nützlich, um sich wiederholende Abfragen zu beschleunigen, sodass die gleichen Ergebnisse nicht erneut berechnet werden müssen. Sobald der Cluster jedoch beendet oder neu gestartet wurde, wird der Cache bereinigt, und alle Abfrageergebnisse werden entfernt.
- Remoteergebniscache: Der Remoteergebniscache ist ein serverloses Cachesystem, das Abfrageergebnisse speichert, indem sie als Arbeitsbereichssystemdaten gespeichert werden. Daher wird dieser Cache nicht durch das Beenden oder Neustarten eines SQL-Warehouses ungültig. Der Remoteergebniscache behebt einen häufigen Problempunkt beim Zwischenspeichern von Abfrageergebnissen im Arbeitsspeicher, der nur verfügbar bleibt, solange die Computeressourcen ausgeführt werden. Der Remotecache ist ein persistenter freigegebener Cache in allen Warehouses in einem Databricks-Arbeitsbereich.
Für den Zugriff auf den Remoteergebniscache ist ein ausgeführtes Warehouse erforderlich. Beim Verarbeiten einer Abfrage sucht ein Cluster zunächst in seinem lokalen Cache und dann bei Bedarf im Remoteergebniscache. Nur wenn das Abfrageergebnis in keinem von beiden Caches zwischengespeichert wurde, wird die Abfrage ausgeführt. Sowohl der lokale als auch der Remotecache haben einen Lebenszyklus von 24 Stunden, der mit dem Cacheeintrag beginnt. Der Remoteergebniscache wird durch das Beenden oder Neustarten eines SQL-Warehouses beibehalten. Beide Caches werden ungültig, wenn die zugrunde liegenden Tabellen aktualisiert werden.
Der Remoteergebniscache ist für Abfragen mit ODBC-/JDBC-Clients und SQL-Anweisungs-API verfügbar.
Um das Zwischenspeichern von Abfrageergebnissen zu deaktivieren, können Sie
SET use_cached_result = false
im SQL-Editor ausführen.Wichtig
Sie sollten diese Option nur für Tests oder Benchmarktests verwenden.
Datenträgercache: Lokales SSD-Zwischenspeichern für Daten, die für Abfragen über SQL-Warehouses aus dem Datenspeicher gelesen werden. Der Datenträgercache wurde entwickelt, um die Abfrageleistung zu verbessern, indem Daten auf dem Datenträger gespeichert werden, sodass beschleunigte Datenlesevorgänge ermöglicht werden. Daten werden automatisch zwischengespeichert, wenn Dateien abgerufen werden, wobei ein schnelles Zwischenformat verwendet wird. Indem Kopien der Dateien im lokalen Speicher gespeichert werden, der an Computeknoten angefügt ist, wird durch den Datenträgercache sichergestellt, dass sich die Daten näher bei den Workern befinden, was zu einer verbesserten Abfrageleistung führt. Siehe Optimieren der Leistung mit Caching in Azure Databricks.
Neben seiner primären Funktion erkennt der Datenträgercache automatisch Änderungen an den zugrunde liegenden Datendateien. Wenn Änderungen erkannt werden, wird der Cache ungültig. Der Datenträgercache verwendet dieselben Lebenszyklusmerkmale wie der lokale Ergebniscache. Das bedeutet, dass der Cache beim Beenden oder Neustarten des Clusters bereinigt wird und neu gefüllt werden muss.
Das Zwischenspeichern der Abfrageergebnisse und der Datenträgercache wirken sich auf Abfragen auf der Databricks SQL-Benutzeroberfläche sowie bei BI und anderen externen Clients aus.