Warum müssen MySQL-Indizes nach unten verschoben werden?

 

Artikelverzeichnis

1. Zurück zur Tischbedienung

Zweitens der Primärschlüsselindex

3. Nicht-Primärschlüsselindizes

4. Betrieb mit niedriger Version

Fünftens: Hochversionsbetrieb

 6. Zusammenfassung

1. Zurück zur Tischbedienung

Bei Datenbanken können Tabellenrückgabevorgänge nicht umgangen werden, solange Indizes beteiligt sind. Dies ist natürlich auch die Prämisse und Grundlage dessen, worüber wir heute sprechen. Apropos Rückkehr zur Tabelle: Wir müssen mit dem Index beginnen. Hier nehmen wir die Innodb-Speicher-Engine als Erklärungsobjekt.

Zweitens der Primärschlüsselindex

        Die zugrunde liegende Datenspeicherung des Primärschlüsselindex wird über den B+-Baum implementiert . Die anderen Knoten außer dem Blattknoten speichern den Primärschlüsselwert, und die Daten einer ganzen Zeile werden auf dem Blattknoten gespeichert. Der Primärschlüsselindex ist eigentlich ein Clustered-Index, bei dem Daten nach dem Primärschlüsselwert sortiert und im B+-Baum gespeichert werden.

Die allgemeine Struktur ist in der folgenden Abbildung dargestellt

3. Nicht-Primärschlüsselindizes

Neben dem Primärschlüsselindex werden andere Indizes als Nicht-Primärschlüsselindizes (nicht gruppierte Indizes) bezeichnet. Anders als beim Primärschlüsselindex speichern die Blattknoten des Nicht-Primärschlüsselindex den Primärschlüsselwert, der auf die entsprechende Zeile verweist, und nicht die vollständigen Zeilendaten. Daher müssen Sie bei Verwendung des Nicht-Primärschlüsselindex zuerst dies tun Suchen Sie den Primärschlüsselwert der entsprechenden Zeile und suchen Sie dann die vollständigen Zeilendaten über den Primärschlüsselwert .

Kehren wir also zur ursprünglichen Frage zurück: Was ist eine Tabellenrückgabeoperation?

        Wenn wir nach einer Datenzeile in einem Nicht-Primärschlüsselindex suchen, besteht die Suchmethode zu diesem Zeitpunkt darin, zuerst den Nicht-Primärschlüssel-Indexbaum zu durchsuchen , den entsprechenden Primärschlüsselwert abzurufen und dann nach der entsprechenden Datenzeile zu suchen auf dem Primärschlüssel-Indexbaum . Diese Operation wird als Tabellenrückgabeoperation bezeichnet .

Okay, hier sollten Sie verstehen, was die Tabellenrückgabeoperation ist. Einfach ausgedrückt besteht es darin, den entsprechenden Primärschlüsselwert im Nicht-Primärschlüssel-Indexbaum abzurufen und dann zum Primärschlüsselindex zurückzukehren, um die entsprechenden Zeilendaten zu finden.

Voraussetzung hierfür ist, dass das durchsuchte Feld nicht im Nicht-Primärschlüssel-Indexbaum vorhanden ist.

4. Betrieb mit niedriger Version

Nachdem wir über die Tabellenrückgabeoperation gesprochen haben, kehren wir zum Thema dieses Artikels zurück – Index-Pushdown .

Tatsächlich gab es vor MySQL-Version 5.6 keine Index-Pushdown-Funktion. Dieses Optimierungselement wurde erst nach Version 5.6 hinzugefügt. Bevor wir also den Index-Pushdown einführen, schauen wir uns an, wie er ohne diese Funktion gehandhabt würde.

Lassen Sie es uns anhand eines realen Beispiels erklären.

Hier gibt es eine Benutzertabelle „Benutzer“, in der der Name, das Geschlecht, die Größe, das Alter und andere Informationen des Benutzers aufgezeichnet werden. In der Tabelle ist id ein automatisch inkrementierender Primärschlüssel und (name,sex) ein gemeinsamer Index. Hier steht 1 für männlich und 2 für weiblich. Jetzt müssen wir Informationen über alle Männer mit dem Nachnamen Wang finden.

SQL ist einfach zu implementieren:

Doch was ist ihr Realisierungsprinzip?

Gemäß dem Präfixprinzip ganz links des gemeinsamen Index kehren wir zum Primärschlüsselindexbaum zurück, wenn wir den ersten Wert finden, der die Bedingung im Nicht-Primärschlüssel-Indexbaum erfüllt, um die entsprechenden Zeilendaten über den Primärschlüsselwert zu finden Zeichnen Sie es im Blattknoten auf und vergleichen Sie dann, ob das Geschlecht Sie gerade suchen.

Das gesamte Prinzip kann durch die folgende Abbildung dargestellt werden.

Sie sehen, in der unteren Version muss jedes Datenelement an die Tabelle zurückgegeben werden, was die Anzahl der Baumsuchen erhöht. Wenn Sie auf große Datenmengen stoßen, wird es zwangsläufig zu Leistungseinbußen kommen.

Fünftens: Hochversionsbetrieb

Nachdem wir uns mit Low-Version-Operationen befasst haben, kehren wir zum Thema dieses Artikels zurück – Index-Pushdown.

Wenn Sie die Schwachstellen kennen, wissen Sie, wie Sie sie lösen können. Es ist ganz einfach: Nur wenn Sie die Bedingungen erfüllen, können Sie das Formular zurücksenden . In Kombination mit unserem Beispiel: Wenn das Geschlecht Geschlecht = 1 erfüllt ist, kehren Sie zur Tabelle zurück, um nachzuschlagen. Auf diese Weise war es möglicherweise erforderlich, die Tabellensuche viermal durchzuführen, jetzt ist dies möglicherweise nur noch zwei Mal erforderlich.

Im Wesentlichen bedeutet Index-Pushdown, dass nur die Felder, die die Bedingungen erfüllen, an die Tabelle zurückgegeben werden, die im Index enthaltenen Felder zuerst beurteilt werden und diejenigen, die die Bedingungen nicht erfüllen, übersprungen werden . Reduzieren Sie unnötige Tabellenrückgabevorgänge.

 6. Zusammenfassung

Zurück zur Tischbedienung

  • Wenn sich das gesuchte Feld nicht im Nicht-Primärschlüssel-Indexbaum befindet, müssen Sie die entsprechenden Zeilendaten im Primärschlüsselindex über den Primärschlüsselwert des Blattknotens abrufen. Dieser Vorgang wird als Tabellenrückgabevorgang bezeichnet.

Index-Pushdown

  • Der Index-Pushdown reduziert hauptsächlich unnötige Tabellenrückgabevorgänge. Filtern Sie für die gefundenen Daten zunächst die Daten heraus, die die Bedingungen nicht erfüllen, und durchsuchen Sie dann den Rest im Primärschlüsselindexbaum.

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_71921932/article/details/131125998
Recomendado
Clasificación