Ein Artikel führt Sie in das statistische Informationsmodell ein

1. Einleitung

„Statistiken“ in einer Datenbank sind eine Sammlung von Daten, die Tabellen- und Spalteninformationen in der Datenbank beschreiben. Das Optimierer-Kostenmodell basiert auf den statistischen Informationen von Tabellen, Spalten, Prädikaten und anderen an der Abfrage beteiligten Objekten, um Pläne auszuwählen. Der Optimierer kann statistische Informationen verwenden, um die Auswahl von Plänen zu optimieren, sodass statistische Informationen im Kostenmodell ausgewählt werden Schlüssel zur optimalen Ausführung von Plänen.

Statistische Informationen umfassen zwei Arten: statistische Tabelleninformationen (Statistiken auf Tabellenebene) und statistische Informationen auf Spaltenebene (Statistiken auf Spaltenebene). In jeder Datenbank werden möglicherweise nicht unbedingt alle unten aufgeführten statistischen Informationen erfasst, sie werden jedoch auf der Grundlage der tatsächlichen Situation jedes Unternehmens erfasst.

1. Statistiken auf Tabellenebene

  • Grundlegende Informationen zur Tabelle

  • Der statistische Informationstyp der Tabelle (Informationsebenen sind in GLOBAL, PARTITION und SUBPARTITION unterteilt)

  • Die Anzahl der Zeilen in der Tabelle

  • Omote exklusivHiroshiNummer

  • Die Anzahl der von der Tabelle belegten Mikroblöcke

  • durchschnittliche Zeilenlänge der Tabelle

  • Zeit, Statistiken für die Tabelle zu sammeln

  • Ob die Statistiken der Tabelle gesperrt sind

2. Statistiken auf Spaltenebene

  • Grundlegende Informationen der Spalte (einschließlich Mieter-ID, Tabellen-ID, Partitions-ID, Spalten-ID)

  • Der statistische Informationstyp der Spalte (Informationsebenen sind in GLOBAL, PARTITION und SUBPARTITION unterteilt)

  • Anzahl eindeutiger Werte NDV(Anzahl eindeutiger Werte)

  • Anzahl der NULL-Werte in der Spalte

  • Maximal- und Minimalwerte einer Spalte

  • Die Größe der Stichprobendaten der Spalte

  • Die Dichte des Histogramms der Spalte

  • Anzahl der Histogramm-Buckets für die Spalte

  • Histogrammtyp (Häufigkeitshistogramm/Konturhistogramm/TopK-Histogramm/gemischtes Histogramm)

In gewöhnlichen statistischen Informationen geht CBO  davon aus, dass die Daten der Zielspalte gleichmäßig zwischen ihren Minimal- und Maximalwerten verteilt sind, und basiert darauf auf der geschätzten Bedingungsauswahlrate und Kardinalität des Ergebnissatzes und wählt dann den Ausführungsplan aus. In der Praxis ist es jedoch offensichtlich, dass einige Daten nicht gleichmäßig verteilt sind und es zu einem sogenannten „Datenversatz“ kommt. Der zu diesem Zeitpunkt erstellte Ausführungsplan ist wahrscheinlich nicht optimal und kann sogar zu einem schlechten Ausführungsplan führen.

Die Einführung eines Histogramms soll das Problem der Datenverzerrung lösen. Ein Histogramm ist eine spezielle Art von Spaltenstatistik, die die Verteilung der Daten in einer Spalte detailliert beschreibt. Nachdem das Histogramm Informationen gesammelt hat, geht CBO nicht mehr davon aus, dass die Spalten gleichmäßig verteilt sind, sondern kann die bedingte Auswahlrate und die Kardinalität der Ergebnismenge basierend auf der tatsächlichen Situation schätzen und den richtigen Ausführungsplan auswählen.

2. Allgemeines Histogrammmodell für statistische Informationen

1. Häufigkeitshistogramm

Wie viele unterschiedliche Werte befinden sich in der Spalte und wie viele Datensätze werden im Datenwörterbuch gespeichert. Der Endpunktwert zeichnet diese eindeutigen Werte auf, und die Endpunktnummer zeichnet die Gesamtzahl der Datensätze bis zu diesem eindeutigen Wert auf. Zu diesem Zeitpunkt ist die Endpunktnummer ein kumulativer Wert. Sie können die Endpunktnummer des vorherigen Datensatzes von der Endpunktnummer eines Datensatzes subtrahieren, um die Anzahl der Datensätze zu erhalten, die dem Endpunktwert dieses Datensatzes entsprechen. Häufigkeitshistogramme eignen sich im Allgemeinen für Tabellen mit relativ wenigen unterschiedlichen Werten. Die Anzahl der Histogramm-Buckets >= NDV (Number of Distinct Value), d. h. die Anzahl der Buckets im Histogramm ist größer oder gleich der Anzahl der unterschiedlichen Werte ​auf der Säule.

2. Konturhistogramm

Bei dieser Art von Histogramm sortiert Oracle zunächst alle Datensätze in der Zieltabelle von klein nach groß entsprechend der Zielspalte und dividiert dann die Gesamtzahl der Datensätze durch die Anzahl der zu verwendenden Buckets, um die zu sortierenden Datensätze zu ermitteln in jedem Bucket beschrieben werden. Nummer. Zu diesem Zeitpunkt zeichnet die Endpunktnummer die Bucket-Nummer auf, die bei 0 beginnt und bis N geht. Der Endpunktwert, der Bucket Nr. 0 entspricht, zeichnet den Minimalwert der Zielspalte auf, und der Endpunktwert, der anderen Buckets entspricht, zeichnet den Maximalwert der Zielspalte bis zu diesem Bucket auf.

Um Platz zu sparen, führt Oracle benachbarte Datensätze zusammen und speichert sie, die sich nur in der Endpunktnummer unterscheiden, aber denselben Endpunktwert im Datenwörterbuch haben. Wenn die entsprechenden Endpunktwerte von Buckets mit Endpunktnummer = 2 und 3 beide P sind, werden nur Endpunktnummer = 3 und Endpunktwert = P im Datenwörterbuch aufgezeichnet. Daher können die Endpunktzahlen im Histogramm-Datenwörterbuch vom Typ „Height Balanced“ diskontinuierlich sein.

Diese Kombination wird im Endpunktwert des Datenwörterbuchs aufgezeichnet, den Oracle als populären Wert bezeichnet. Offensichtlich ist der Anteil des beliebten Werts in der Zielspalte umso größer und die entsprechende Kardinalität umso größer, je größer die Differenz zwischen dem Endpunktnummernwert des Datensatzes mit beliebten Werten und dem Endpunktnummernwert des vorherigen Datensatzes ist. Dies sollte auch aufgerufen werden beliebter Wert. Grund.

3. Top-k-Histogramm

Eine Variante des Häufigkeitshistogramms, die auf Situationen abzielt, in denen der Anteil der von k Histogrammen abgedeckten Daten einen bestimmten Schwellenwert überschreitet. Selten auftretende unterschiedliche Werte werden im Histogramm ignoriert.

4. Gemischtes Histogramm

Das Hybridhistogramm kombiniert die Eigenschaften des höhenbasierten Histogramms und des Häufigkeitshistogramms. Der Unterschied zum Häufigkeitshistogramm und zum Top-k-Histogramm besteht jedoch darin, dass ein Bucket mehrere unterschiedliche Wertwerte enthalten kann und die gesammelten Daten entsprechend segmentiert werden auf die Anzahl der Buckets, und alle Daten in jedem Segment werden in einem entsprechenden Bucket platziert, sodass weniger Buckets verwendet werden können, um die Datenverteilung einer größeren Datenmenge zu beschreiben. Der Maximalwert im Bucket ist Es wird verwendet als endpoint_value, und es wird einen weiteren endpoint_repeat_cnt geben, um die Häufigkeit von endpoint_value aufzuzeichnen. Mit dieser Methode kann der Optimierer in bestimmten Situationen bessere Selektivitätsschätzungen erhalten.

Einfache Histogramme gleicher Höhe werden derzeit selten in Datenbanken verwendet. Viele Optimierungslösungen basieren auf Histogrammen gleicher Höhe und fügen Löcher (Intervalle mit nicht kontinuierlichen Werten, die einen bestimmten Schwellenwert überschreiten, werden als Löcher betrachtet), Hochfrequenzwerte usw. hinzu Der zweithöchste Häufigkeitswert wird durch ein annähernd gleichhohes Histogramm dargestellt, das sicherstellt, dass jeder Wert nur in einem Intervall erscheint.

Die Verwendungslogik des Häufigkeitshistogramms, des Top-k-Histogramms und des gemischten Histogramms in verschiedenen Szenarien lautet wie folgt:

 

Wenn die Datenverteilung in der Histogramm-Informationsspalte verzerrt ist, liefert die Vorhersage der Ergebnismengengröße einer einzelnen Tabelle relativ genaue Ergebnisse, kann jedoch bei verwandten Abfragen keine genaue Beurteilung der Größe der zugehörigen Ergebnismenge liefern.

Bei verwandten Abfragen gibt es eine weitere Methode zur Bestimmung der Größe der Ergebnismenge: Count-Min Sketch. Es handelt sich um eine Datenstruktur, die Gleichheitsabfragen, Join-Größenschätzungen usw. verarbeiten und starke Genauigkeitsgarantien bieten kann. Seit seiner Einführung im Jahr 2003 im Jahr 2003 hat es aufgrund seiner einfachen Erstellung und Verwendung weit verbreitete Verwendung gefunden.

Count-Min Sketch verwaltet ein d*w-Zählerarray. Für jeden Wert werden d unabhängige Hash-Funktionen verwendet, um ihn einer Spalte in jeder Zeile zuzuordnen, und die Zählwerte dieser d Positionen werden entsprechend geändert.

Auf diese Weise werden bei der Abfrage, wie oft ein Wert vorkommt, immer noch d-Hash-Funktionen verwendet, um die zugeordnete Position in jeder Zeile zu ermitteln, und der Mindestwert dieser d-Werte wird als geschätzter Wert verwendet.

Zu den von KaiwuDB  bereitgestellten statistischen Informationen auf Spaltenebene gehören die Anzahl der Zeilen, die Anzahl der verschiedenen Werte, die Anzahl der NULL-Werte usw. Histogrammstatistiken können auch für Fälle bereitgestellt werden, in denen die Daten in den Spalten ungleichmäßig verteilt sind. Das Histogramm von KaiwuDB ist ebenfalls ein ungefähres Histogramm gleicher Höhe. In Szenarien, in denen die unterschiedlichen Werte der Spalten kleiner oder gleich 200 sind, kann es einen ähnlichen Effekt wie die Häufigkeit haben Histogramm. Es kann auch Hochfrequenzwerte darstellen, aber aktuelle HyperLoglog-basierte Algorithmen sind bei der Verarbeitung der Anzahl unterschiedlicher Werte im Intervall weniger genau.

Weniger als oder gleich 200 Buckets:

Mehr als 200 Eimer:

Fügen Sie 100.000 Zufallswerte von 1 bis 10.000 ein, erhöhen Sie die doppelten Werte von 201, 202, 203, 204, 205, 206 alle über 1.000, löschen Sie die Werte zwischen 400 und 2.000 und erstellen Sie Statistiken und Histogramme.

3. Zusammenfassung

Das kostenbasierte Optimierungsmodell (CBO) ist derzeit das gängigste Optimierungsmodell fürrelationale Datenbanken, und statistische Informationen sind die Grundlage dafür CBO. Bis zu einem gewissen Grad ist die Genauigkeit statistischer Informationen der Schlüssel dafür, ob CBO den optimalen Ausführungsplan erstellen kann. Die Erfassung statistischer Informationen basiert hauptsächlich auf statistischen Informationen auf Tabellenebene und statistischen Informationen auf Spaltenebene. Wenn die Datenverteilung auf den Spalten ungleichmäßig ist, ist die Genauigkeit der Histogramminformationen besonders wichtig. Derzeit sind Konturhistogramme und Häufigkeit die Hauptmethoden Histogramme. und das entsprechende Verformungshistogramm.

Obwohl die Genauigkeit statistischer Informationen der Schlüssel zur Erstellung eines optimalen Ausführungsplans ist, verbraucht die Berechnung statistischer Informationen auch Systemressourcen. Im Allgemeinen gilt: Je mehr Daten im Rahmen derselben Strategie in die Berechnung einbezogen werden, desto genauer können die statistischen Informationen die tatsächliche Verteilung der Daten in der Tabelle beschreiben. Der Preis besteht jedoch darin, dass mehr Ressourcen verbraucht werden und die Berechnungszeit länger ist.

Normalerweise werden die Daten in der Tabelle abgetastet, um statistische Informationen zu sammeln, oder statistische Informationen werden inkrementell gesammelt, um die Effizienz der statistischen Informationen zu verbessern. Wenn die in die Berechnung einbezogenen Daten ermittelt werden, wird anhand einer groben Schätzung ermittelt, welche Strategie zum Sammeln statistischer Informationen verwendet werden soll, damit die Datenverteilung besser beschrieben werden kann.

Bei Tabellen mit häufig wechselnden Daten steht die Gültigkeit statistischer Informationen im Vordergrund. Die Frage, wie man die Gültigkeit statistischer Informationen effektiv bestimmen und statistische Informationen durch Ändern von Daten korrigieren kann, ist ein schwieriger Punkt in der statistischen Informationsforschung. Darüber hinaus können für einige spezielle Tabellen in einigen konvergenten Multi-Mode-Datenbanken neue statistische Informationsstrategien basierend auf den Eigenschaften der Tabellen selbst ausprobiert werden. In Zeitreihendatentabellen weisen die Daten in der Tabelle beispielsweise eine gewisse Regelmäßigkeit auf. In einigen Tabellen wurden sogar Downsampling-Regeln hinzugefügt. Neue Strategien können statistische Informationen basierend auf Downsampling-Regeln generieren oder ersetzen.

Kurz gesagt, für herkömmliche relationale Datenbanken ist die Erfassung statistischer Informationen ein wesentlicher Bestandteil, und die Qualität statistischer Informationen wirkt sich direkt auf die Qualität des Ausführungsplans aus. Für neue Tabellen in konvergenten Datenbanken kann die Datenverteilung der Tabellen anhand neuer Strategien zur Erzielung statistischer Informationseffekte statistisch geschätzt werden.

 

Tang Xiaoou, Gründer von SenseTime, ist im Alter von 55 Jahren verstorben Im Jahr 2023 stagniert PHP Wi-Fi 7 wird vollständig verfügbar sein Anfang 2024 Debüt, fünfmal schneller als Wi-Fi 6 Das Hongmeng-System steht kurz vor der Unabhängigkeit und viele Universitäten haben „Hongmeng-Klassen“ eingerichtet Zhihui Das Startup-Unternehmen von Jun refinanziert sich, der Betrag übersteigt 600 Millionen Yuan und die Pre-Money-Bewertung beträgt 3,5 Milliarden Yuan Quark Browser PC-Version startet interne Tests KI-Code-Assistent ist beliebt, und Programmiersprachen-Rankings sind alle Es gibt nichts, was Sie tun können Das 5G-Modem und die Hochfrequenztechnologie des Mate 60 Pro liegen weit vorne MariaDB spaltet SkySQL auf und etabliert sich als unabhängiges Unternehmen Xiaomi antwortet auf Yu Chengdongs „Keel Pivot“-Plagiatsaussage von Huawei
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/5148943/blog/10123199
Recomendado
Clasificación