Detaillierte Erläuterung des MySQL-Index (Zusammenfassung)
In der obigen „Analyse des MySQL-Ausführungsprozesses“ haben wir hauptsächlich den Ausführungsprozess von SQL-Anweisungen auf der Serverebene vorgestellt
Lassen Sie uns ihn analysieren Werfen wir noch einmal einen Blick auf die Ausführungsschritte spezifischer Anweisungen auf der Engine-Ebene. Lassen Sie uns zunächst den Index
Index verstehen Die Entstehung des Index dient eigentlich dazu, die Effizienz der Datenabfrage zu verbessern, ist wie das Inhaltsverzeichnis eines Buches
Datenstruktur
Gemeinsame Datenstrukturen umfassen geordnete Hash-Tabellen Arrays und Suchbäume
Eine Hash-Tabelle ist eine Struktur, die Daten mithilfe eines Schlüsselwerts speichert. Solange wir den zu findenden Wert eingeben, der der Schlüssel ist, können wir den entsprechenden Wert finden Wert. Die Idee des Hashings ist sehr einfach. Fügen Sie den Wert in das Array ein, verwenden Sie eine Hash-Funktion, um den Schlüssel in eine Position umzuwandeln, und fügen Sie dann den Wert an der entsprechenden Position des Arrays ein. Zwangsläufig mehrere Schlüsselwerte passieren Die Konvertierung der Hash-Funktion führt zum gleichen Wert. Eine Möglichkeit, mit dieser Situation umzugehen, besteht darin, eine verknüpfte ListeHash-Tabelle zu erstellen. Diese Struktur eignet sich für Szenarien, in denen es nur gleichwertige Abfragen gibt Geordnetes Array in Die Leistung sowohl in äquivalenten Abfrage- als auch in Bereichsabfrageszenarien ist sehr gut
Wenn Sie nur die Abfrageeffizienz betrachten, sind geordnete Arrays sehr gut. Es wird jedoch problematisch, wenn Sie einen Datensatz in der Mitte einfügen müssen. Die Kosten sind zu hoch.Der geordnete Array-Index ist nur geeignet für statische Speicher-Engines
Die Merkmale des binären Suchbaums sind: Der linke Sohn jedes Knotens ist kleiner als der übergeordnete Knoten, und der übergeordnete Knoten ist kleiner als der rechte Sohn
Um die Abfragekomplexität O(log(N)) beizubehalten, müssen Sie natürlich dafür sorgen, dass der Baum ein ausgeglichener Binärbaum bleibt. Um diese Garantie zu gewährleisten, beträgt die zeitliche Komplexität der Aktualisierung ebenfalls O(log(N))Binärbäume sind die effizienteste Suche, aber tatsächlich verwenden die meisten Datenbankspeicher keine Binärbäume. Der Grund dafür ist, dass der Index nicht nur im Speicher vorhanden ist, sondern auch auf die Festplatte geschrieben wird
Damit eine Abfrage so wenig Festplatte wie möglich liest, muss der Abfrageprozess auf möglichst wenige Datenblöcke zugreifen. Dann sollten wir keine binären Bäume verwenden, sondern „N-äre“ Bäume. Hier hängt das „N“ im „N-ary“-Baum von der Größe des Datenblocks ab
N-ary-Baum wird aufgrund seiner Leistungsvorteile beim Lesen und Schreiben sowie bei der Anpassung häufig in Datenbanken verwendet Festplattenzugriffsmuster. Die Engine ist defekt
InnoDBs IndexmodellIn InnoDB werden Tabellen in Form von Indizes basierend auf der Primärschlüsselreihenfolge in diesem Speicher gespeichert Die Methode wird als Index-organisierte Tabelle bezeichnet. InnoDB verwendet das B+-Baum-Indexmodell, sodass die Daten im B+-Baum gespeichert werden
Jeder Index entspricht einem B+-Baum in InnoDB Entsprechend dem Inhalt des Blattknotens, dem Indextyp ist unterteilt in Die Blattknoten von Primärschlüsselindizes und Nicht-Primärschlüsselindizes
speichern die gesamte Datenzeile. In InnoDB wird der Primärschlüsselindex auch Clustered-Index genannt
Der Inhalt der Blattknoten des Nicht-Primärschlüsselindex ist der Wert des Primärschlüssels. In InnoDB werden Nicht-Primärschlüsselindizes auch Sekundärindizes genannt
Abfragen, die auf Nicht-Primärschlüsselindizes basieren, erfordern das Scannen eines weiteren Indexbaums (Tabellenrückgabe). Daher sollten wir versuchen, die Primärschlüsselabfrage IndexpflegeB+-Baum zu verwenden, um die Indexordnung beim Einfügen neuer Werte aufrechtzuerhalten
Wenn der neu eingefügte ID-Wert kleiner als der ursprüngliche ist, ist es relativ mühsam, die nachfolgenden Daten logisch zu verschieben, um Platz dafür zu schaffenUnd noch schlimmer, wenn die Daten Wenn die Seite voll ist, müssen Sie gemäß dem B+-Baumalgorithmus eine neue Datenseite beantragen und dann einige Daten dorthin verschieben. Dieser Vorgang wird als Seitenteilung bezeichnet. In diesem Fall leidet natürlich die Leistung.
Neben der Leistung wirken sich Seitenaufteilungsvorgänge auch auf die Datenseitennutzung aus. Die ursprünglich auf einer Seite platzierten Daten werden nun auf zwei Seiten aufgeteilt und die Gesamtplatznutzung wird um etwa 50 % reduziert.
Natürlich wird es Spaltungen und Fusionen geben. Wenn zwei benachbarte Seiten aufgrund gelöschter Daten eine geringe Auslastung aufweisen, werden die Datenseiten zusammengeführt. Der Zusammenführungsprozess kann als der umgekehrte Prozess des Aufteilungsprozesses betrachtet werden
Der Einfügungsdatenmodus des automatisch zunehmenden Primärschlüssels entspricht dem zuvor erwähnten inkrementellen Einfügungsszenario. Jedes Mal, wenn ein neuer Datensatz eingefügt wird, handelt es sich um einen Anhängevorgang. Dabei werden weder andere Datensätze verschoben, noch wird die Teilung der Blattknoten ausgelöst.
Wenn Felder mit Geschäftslogik als Primärschlüssel verwendet werden, ist es oft nicht einfach, eine geordnete Einfügung sicherzustellen, sodass die Kosten für das Schreiben von Daten relativ hoch sind
Je kleiner der Primärschlüssel ist Länge, die Blattknoten gewöhnlicher Indizes Je kleiner sie sind, desto kleiner ist der von gewöhnlichen Indizes belegte PlatzAus Sicht der Leistung und des Speicherplatzes ist die automatische Inkrementierung des Primärschlüssels daher häufig eine Vernünftigere Auswahl
Gibt es noch welche? Ist das Szenario für die direkte Verwendung von Geschäftsfeldern als Primärschlüssel geeignet? Einige Geschäftsszenarioanforderungen lauten wie folgt: 1 Es gibt nur einen Index
2.
Dies ist ein typisches KV-Szenario
Covering IndexWenn die ausgeführte Anweisung ID aus t auswählt, müssen Sie nur den Wert von ID überprüfen. Der Wert von ID befindet sich bereits im k-Indexbaum, sodass die Abfrageergebnisse direkt bereitgestellt werden können, ohne zur Tabelle zurückkehren zu müssen . Mit anderen Worten: In dieser Abfrage hat der Index k unsere Abfrageanforderungen „abgedeckt“. Wir nennen ihn einen abdeckenden Index
, da der abdeckende Index die Anzahl der Baumsuchen reduzieren und die Abfrageleistung erheblich verbessern kann Daher ist die Verwendung des Covering-Index eine gängige Methode zur Leistungsoptimierung.
Index-Pushdown
Wenn das Prinzip des Präfixes ganz links erfüllt ist, kann das Präfix ganz links verwendet werden Eintrag im Index. An dieser Stelle möchten Sie vielleicht fragen: Was passiert mit den Teilen, die nicht mit dem Präfix ganz links übereinstimmen?
Die in MySQL 5.6 eingeführte Index-Pushdown-Optimierung kann während des Indexdurchlaufprozesses zuerst die im Index enthaltenen Felder beurteilen, Datensätze, die die Bedingungen nicht erfüllen, direkt herausfiltern und die Anzahl der Tabellenrückgaben reduzieren
Prinzip des Präfixes ganz links
Nicht nur die gesamte Definition des Index, solange das Präfix ganz links erfüllt ist, kann der Index verwendet werden, um den Abruf zu beschleunigen
Wie ordne ich beim Erstellen eines gemeinsamen Index die Reihenfolge der Felder im Index an?
Unser Bewertungskriterium ist hier die Wiederverwendbarkeit des Index. Da das Präfix ganz links unterstützt werden kann und bereits ein gemeinsamer Index von (a, b) vorhanden ist, besteht im Allgemeinen keine Notwendigkeit, einen separaten Index für a zu erstellen. Daher besteht das erste Prinzip darin, dass, wenn durch Anpassen der Reihenfolge ein Index weniger beibehalten werden kann, diese Reihenfolge oft diejenige ist, die priorisiert werden muss
Präfixindex
Am häufigsten verwenden Das Prinzip des linken Präfixes ermöglicht es Ihnen, einen Teil einer Zeichenfolge als Index zu definieren. Wenn die Anweisung, mit der Sie den Index erstellen, die Präfixlänge nicht angibt, enthält der Index standardmäßig die gesamte Zeichenfolge
. Dies hat jedoch den Nachteil, dass die Anzahl der zusätzlichen Datensatzscans erhöht werden kann Index ist derselbe Bedarf weiterer Vergleich
Verwenden Sie den Präfixindex und definieren Sie die Länge. Sie können Platz sparen, ohne zu viel zusätzliche Abfragekosten hinzuzufügen
Sie können den statistischen Index verwenden Wie Es gibt viele verschiedene Werte, um zu bestimmen, wie lange das Präfix verwendet werden soll, wodurch die Anzahl der Scans reduziert wird
Der Einfluss des Präfixindex auf den Abdeckungsindex
Verwendung Präfixindex Der Covering-Index optimiert nicht nur die Abfrageleistung, dies ist auch ein Faktor, den Sie berücksichtigen müssen, wenn Sie entscheiden, ob Sie einen Präfixindex
Reverse Storage und Hash Storage
Für Felder wie Postfächer kann die Verwendung von Präfixindizes gut funktionieren. Was sollten wir jedoch tun, wenn wir auf eine Situation stoßen, in der die Präfixunterscheidung nicht gut genug ist? Die erste Möglichkeit besteht darin, die Speicherung in umgekehrter Reihenfolge zu verwenden. Wenn Sie die ID-Nummer speichern, speichern Sie sie verkehrt herumDie zweite Möglichkeit besteht darin, das Hash-Feld zu verwenden. Sie können ein weiteres Ganzzahlfeld in der Tabelle erstellen, um den Bestätigungscode des Personalausweises zu speichern und einen Index für dieses Feld zu erstellen Empfohlenes kostenloses Lernvideo-Tutorial:Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des MySQL-Index (Zusammenfassung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Eine effektive Überwachung von Redis -Datenbanken ist entscheidend für die Aufrechterhaltung einer optimalen Leistung, die Identifizierung potenzieller Engpässe und die Gewährleistung der Zuverlässigkeit des Gesamtsystems. Redis Exporteur Service ist ein leistungsstarkes Dienstprogramm zur Überwachung von Redis -Datenbanken mithilfe von Prometheus. In diesem Tutorial führt Sie die vollständige Setup und Konfiguration des Redis -Exporteur -Dienstes, um sicherzustellen, dass Sie nahtlos Überwachungslösungen erstellen. Durch das Studium dieses Tutorials erhalten Sie voll funktionsfähige Überwachungseinstellungen
