Auf dieser Seite werden die Spanner-Abfrageoptimierung und ihre Vorteile beschrieben.
Übersicht
Die SQL-Abfrageoptimierung von Spanner wandelt eine deklarative SQL-Anweisung um, die die gewünschten Daten der Abfrage in einen unverzichtbaren Ausführungsplan, das eine Möglichkeit beschreibt, diese Daten genau zu erhalten. Der Prozess der Das Transformieren einer deklarativen Anweisung in einen Abfrageausführungsplan umfasst Sie führen Transformationen an Baumstrukturen aus, die zur Darstellung der Abfrage verwendet werden. Das Optimierungsprogramm behält beim Erstellen eines Ausführungsplans die logische Bedeutung der ursprünglichen SQL-Abfrage bei, sodass die richtigen Zeilen zurückgegeben werden.
Eine weitere wichtige Rolle des Optimierers ist die Erstellung eines Ausführungsplans, effizient zu gestalten.
Wie erstellt das Spanner-Optimierungstool effiziente Ausführungspläne?
Das Optimierungstool von Spanner verwendet eine Kombination aus etablierten Heuristiken und kostenbasierte Optimierung, um effiziente Pläne zu erstellen. Manche Heuristiken sind sehr wie z. B. „Filter auf Remote-Computern ausführen, auf den lokalen Computer übertragen. Andere Heuristiken sind komplexer, beinhalten aber immer noch das Prinzip der Verschiebungslogik, die das Datenvolumen näher an den Daten reduziert. Dieses Prinzip ist besonders wichtig in einem System, das Daten auf mehreren Computern teilt.
Nicht alle Entscheidungen zur Ausführung
können mit solchen festen Regeln effektiv getroffen werden.
Das Optimierungstool von Spanner trifft ebenfalls Entscheidungen auf Grundlage eines geschätzten
Kosten für Alternativen. Solche Kostenschätzungen werden mithilfe der Struktur
die Abfrage, das Schema der Datenbank
und die Schätzungen des Datenvolumens,
durch Fragmente der Abfrage erzeugt wird. Beispiel: Spanner
wird geschätzt, wie viele Zeilen der Tabelle „Songs“ den Filter erfüllen
SongGenre = "Country"
, wenn dieser Filter in einer Abfrage enthalten ist. Damit die
zur Berechnung solcher Schätzungen
Statistiken zur Charakterisierung der Verteilung von Daten in einer Datenbank.
Darüber hinaus optimiert Spanner die Abfrageausführung automatisch, Es wird ermittelt, ob eine zeilen- oder spaltenorientierte Verarbeitungsmethode der Abfrage. Weitere Informationen finden Sie unter Optimize-Scans.
Weitere Informationen zu Abfrageausführungsplänen und ihrer Verwendung durch Spanner für Abfragen in einer verteilten Umgebung finden Sie unter Abfrageausführungspläne.
Versionierung des Abfrageoptimierungstools
Im Laufe der Zeit wird die Abfrageoptimierung von Spanner weiterentwickelt, Auswahlmöglichkeiten im Abfrageausführungsplan und verbessert die Genauigkeit die Schätzungen, die als Grundlage für diese Entscheidungen dienen, was zu einer effizienteren Abfrage Ausführungspläne.
Spanner veröffentlicht Aktualisierungen des Optimierungstools als neue Abfrageoptimierung um die Effizienz der Pläne für die Abfrageausführung zu verbessern. Weitere Informationen Informationen zu den verschiedenen Versionen finden Sie unter Versionen der Spanner-Abfrageoptimierung.
Statistikpakete der Abfrageoptimierung
Spanner verwaltet Statistiken zur Datenverteilung der Tabelle Spalten, um einzuschätzen, wie viele Zeilen durch eine Abfrage erzeugt werden. Die Abfrage Optimierer nutzt diese Schätzungen, um den besten Plan für die Abfrageausführung auszuwählen. Diese Statistiken werden regelmäßig von Spanner aktualisiert. Da die Statistiken werden zur Auswahl von Abfrageausführungsplänen verwendet, wenn die Statistiken aktualisiert wurde, kann Spanner den Abfrageplan ändern, der die es für eine Abfrage verwendet.
Standardmäßig verwenden Datenbanken automatisch das neueste generierte Statistikpaket. Sie können Ihre Datenbank an eine frühere Statistikpaketversion anheften. Sie haben auch die Möglichkeit, einzelne Abfragen mit einem anderen Statistikpaket als dem neuesten auszuführen.
Neues Statistikpaket erstellen
Spanner generiert automatisch nach jedem Tag
3 Tage. Um manuell ein neues Statistikpaket zu erstellen, verwenden Sie die Methode
GoogleSQL-DDL-Anweisung ANALYZE
oder die PostgreSQL-Anweisung
ANALYZE
-DDL-Anweisung.
Nach erheblichen Änderungen an den Daten oder dem Schema Ihrer Datenbank wurde Statistikpakets die Abfrageleistung verbessern kann. Als Best Practice sollten Sie ein neues Statistikpaket erstellen, wenn Folgendes eintritt:
- Die Datenbank verarbeitet eine große Anzahl von Einfügungs-, Aktualisierungs- oder Löschvorgängen.
- Sie fügen der Datenbank einen neuen Index hinzu.
- Sie fügen einer Tabelle eine neue Spalte hinzu.
DDL-Anweisung ANALYZE
ausführen
aktualisiert Ihr Schema, initiiert eine
Vorgang mit langer Ausführungszeit ausgeführt und das Erstellen automatisch ausgelöster Statistiken abgebrochen.
Nachdem Spanner die Ausführung der Anweisung abgeschlossen hat, dauert es bis zu zehn Minuten, bis das Abfrageoptimierungstool ein neues Statistikpaket in die Abfrageplanung einbezieht.
Automatische Speicherbereinigung für Statistikpakete
Statistikpakete in Spanner werden seit 30 Tagen aufbewahrt. Anschließend werden sie einer automatischen Speicherbereinigung unterzogen.
Integrierter Spanner INFORMATION_SCHEMA.SPANNER_STATISTICS
enthält eine Liste der verfügbaren Statistikpakete. In jeder Zeile dieser Tabelle ist ein Statistikpaket nach Name aufgeführt. Der Name enthält den Zeitstempel der Erstellung des jeweiligen Pakets. Jeder Eintrag enthält außerdem ein Feld namens ALLOW_GC
, das definiert, ob ein Paket durch die automatische Speicherbereinigung gelöscht werden kann.
Sie können Ihre gesamte Datenbank an jedes der in dieser Tabelle aufgeführten Pakete anheften. Das angepinnte Statistikpaket wird nicht automatisch bereinigt und der Wert von ALLOW_GC
wird ignoriert, solange die Datenbank an dieses Paket angeheftet ist. Wenn Sie ein bestimmtes Statistikpaket für eine einzelne Abfrage verwenden möchten, muss das Paket mit ALLOW_GC=FALSE
aufgeführt oder angeheftet sein. Dadurch wird verhindert, dass Abfragen fehlschlagen, nachdem das Statistikpaket automatisch bereinigt wurde. Sie können den Wert
ALLOW_GC
mit GoogleSQL ALTER STATISTICS
oder PostgreSQL
ALTER STATISTICS
.
Paketaufbewahrung und personenidentifizierbare Informationen
Ein Statistikpaket enthält gemäß der Standardbranchenpraxis Histogramme der Spaltendaten. Dadurch kann das Abfrageoptimierungstool die optimalen Abfragepläne auswählen. Das Histogramm wird mit einer kleinen Stichprobe von Werten erstellt. Dieses kleine Dataset kann möglicherweise personenidentifizierbare Informationen enthalten.
Spanner erstellt regelmäßig ein neues Statistikpaket
werden sie standardmäßig 30 Tage lang aufbewahrt. Daher wird eine kleine Stichprobe von Werten aus
Die Datenbank kann in Statistikhistogrammen weitere 30 Tage lang aufbewahrt werden.
Statistikpakete mit der Datenbankoption optimizer_statistics_package
angepinnt
oder Pakete mit der Option ALLOW_GC=FALSE
werden nicht automatisch bereinigt.
Histogramme in diesen Paketen können Werte enthalten, die für einen bestimmten Zeitraum aus der Datenbank gelöscht wurden.
längerer Zeitraum. Darüber hinaus ist der Inhalt von Statistikpaketen in
Datenbanksicherungen.
Die Statistiken des Optimierungstools werden genauso wie Nutzerdaten verschlüsselt gespeichert.
Der für diese Pakete erforderliche Gesamtspeicherbedarf beträgt normalerweise weniger als 100 MB und wird auf Ihre Gesamtspeicherkosten angerechnet.
Nächste Schritte
- Weitere Informationen zur Geschichte der Abfrageoptimierung finden Sie unter Abfrageoptimierung. Versionsverlauf.
- Um sowohl die Optimierungsversion als auch das Statistikpaket für Ihr finden Sie unter Abfrageoptimierung verwalten.