VorwortIndex Condition Pushdown (ICP) ist eine neue Funktion von MySQL 5.6. Sie kann die Anzahl der Tabellenabfragen reduzieren und die Abrufeffizienz verbessern. MySQL-ArchitekturUm Index-Pushdown zu verstehen, müssen Sie zunächst die Architektur von MySQL verstehen: Das obige Bild stammt aus der offiziellen MySQL-Dokumentation. MySQL wird üblicherweise von oben nach unten in die folgenden Schichten unterteilt:
Die MySQL-Serviceschicht ist für die SQL-Syntaxanalyse, Trigger, Ansichten, integrierte Funktionen, Binärprotokolle, die Generierung von Ausführungsplänen usw. verantwortlich und ruft die Speicher-Engine-Schicht auf, um Daten zu speichern und abzurufen. Das „nach unten“ in „Index Push Down“ bedeutet tatsächlich, dass einige der Aufgaben, die in der Verantwortung der oberen Schicht (Serviceschicht) liegen, zur Verarbeitung an die untere Schicht (Speicher-Engine) übergeben werden. Beispiel für Index-PushdownNehmen Sie an, dass die Daten und die Struktur der Benutzertabelle wie folgt sind:
Erstellen Sie einen gemeinsamen Index (Alter, Geburtstag) und fragen Sie Benutzer ab, die älter als 20 Jahre sind und am 01.03. Geburtstag haben: Wählen Sie * vom Benutzer aus, wobei Alter > 20 und Geburtstag = "03-01" Da das Altersfeld eine Bereichsabfrage verwendet, kann in diesem Fall gemäß dem Prinzip des ganz linken Präfixes nur das Altersfeld für die Bereichsabfrage verwendet werden, das Geburtstagsfeld im Index kann jedoch nicht verwendet werden. Verwenden Sie „explain“, um den Ausführungsplan anzuzeigen: +------+----------+----------+-----------+---------------+---------------+--------+------+------+---------+---------+-----------+---------+-----------------------+ | ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra | +------+----------+----------+-----------+---------------+---------------+--------+------+------+---------+---------+-----------+---------+-----------------------+ | 1 | SIMPLE | Benutzer | Bereich | Alter_Geburtstag | Alter_Geburtstag | 4 | NULL | 3 | Indexbedingung wird verwendet | +------+----------+----------+-----------+---------------+---------------+--------+------+------+---------+---------+-----------+---------+-----------------------+ Es ist ersichtlich, dass, obwohl der Index age_birthday verwendet wird, die Indexlänge key_len nur 4 beträgt, was bedeutet, dass nur das Altersfeld des gemeinsamen Index wirksam ist (da das Altersfeld vom Typ int ist und 4 Bytes belegt). Schließlich gibt die Bedingung „Index verwenden“ in der Spalte „Extra“ an, dass diese Abfrage die Index-Pushdown-Optimierung verwendet. So führen Sie die folgenden Schritte ohne Index-Pushdown aus:
Wenn die Index-Pushdown-Optimierung aktiviert ist, lauten die Ausführungsschritte wie folgt:
Nach dem Aktivieren des Index-Pushdowns wird die Where-Bedingung zur Ausführung von der MySQL-Dienstebene auf die Speicher-Engine-Ebene verschoben. Der Vorteil besteht darin, dass die Speicher-Engine basierend auf der ID weniger oft Daten aus der Tabelle liest. Wenn im obigen Beispiel kein Index-Pushdown stattfindet, muss die Tabelle noch zweimal abgefragt werden. Darüber hinaus handelt es sich bei Tabellenabfragen wahrscheinlich um diskrete E/A, was die Datenbankleistung in einigen Fällen erheblich verbessern kann. ZusammenfassenDamit ist dieser Artikel über das einfache Verständnis und die Beispiele von MySQL Index Pushdown (ICP) abgeschlossen. Weitere relevante Inhalte zu MySQL Index Pushdown (ICP) finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Der Implementierungscode des CSS3-Eingabefelds ähnelt dem Animationseffekt der Google-Anmeldung
>>: Mit dem Befehl docker prune können Sie selten genutzte Daten regelmäßig bereinigen.
1. Titel HTML definiert sechs <h>-Tags: <...
Inhaltsverzeichnis Vorwort Installieren Sie vue-i...
Inhaltsverzeichnis 1. Überprüfen Sie, ob die Dock...
Einführung in Swap Swap (d. h. Swap-Partition) in...
Vorwort: Eines Tages baute ich einen MySQL-Dienst...
In diesem Artikelbeispiel wird der spezifische Co...
Empfohlene Artikel: Klicken Sie auf die untere re...
In diesem Artikel finden Sie den spezifischen Cod...
Die Frage wird hier zitiert: https://www.zhihu.co...
Da sich die heimische Netzwerkumgebung immer weit...
Ubuntu ist ein kostenloses und quelloffenes Deskt...
Der DIV-Schwebeeffekt (feste Position) wird aussc...
Lassen Sie uns über einige Probleme sprechen, die ...
Inhaltsverzeichnis Was ist Abflachung? Rekursion ...
Der Zweck der Verwendung von HTML zum Markieren v...