MySQL-Sortierungsunterschied
Lassen Sie uns im Detail über den MySQL-Sortiermodus von flacher nach tiefer sprechen, wie er sich auf die Auswahl verschiedener Sortiermodi durch MySQL auswirkt und wie die Sortierung optimiert werden kann.
Empfohlener Kurs: MySQL-Tutorial.
Sortieren ist eine Grundfunktion in Datenbanken, und MySQL bildet da keine Ausnahme.
Benutzer können die angegebene Ergebnismenge über die Order by-Anweisung sortieren. Tatsächlich verwenden nicht nur die Order by-Anweisung, sondern auch die Group by-Anweisung und die Distinct-Anweisung implizit die Sortierung. In diesem Artikel wird zunächst kurz vorgestellt, wie SQL Indizes verwendet, um Sortierkosten zu vermeiden, und anschließend werden die internen Prinzipien von MySQL zur Implementierung der Sortierung vorgestellt.
Lösen Sie die folgenden Fragen:
Wo verwendet MySQL die Sortierung und wie kann man beurteilen, ob MySQL die Sortierung verwendet?
MySQL verfügt über mehrere Sortiermodi und wie werden diese verwendet? MySQL wählt verschiedene Sortiermodi;
Welche Beziehung besteht zwischen MySQL-Sortierung und read_rnd_buffer_size und unter welchen Umständen kann eine Erhöhung von read_rnd_buffer_size die Sortierung optimieren?
Wie kann festgestellt werden, dass MySQL die Festplatte zum Sortieren verwendet? um es zu vermeiden oder zu optimieren.
Wie Felddaten variabler Länge (varchar) während der Sortierung im Speicher gespeichert werden und welche Verbesserungen es in 5.7 gibt.
Welche Verbesserungen gibt es in diesem Fall? Gibt es im Sortiermodus?
Welches Problem zeigt der Statuswert an, wenn er zu groß ist?
Wenn MySQL Sortierung verwendet? kann es analysiert und optimiert werden, um die Sortierung zu beschleunigen?
2. Sortierung
Wenn wir den MySQL-Ausführungsplan durch „explain“ betrachten, wird in der Spalte „Extra“ oft „Verwenden von Dateisortierung“ angezeigt.
Für SQL, das keine Indizes verwenden kann, um die Sortierung zu vermeiden, muss die Datenbank die Sortierfunktion selbst implementieren, um den Benutzeranforderungen gerecht zu werden. Zu diesem Zeitpunkt wird im SQL-Ausführungsplan „Verwenden von Dateisortierung“ angezeigt Hier bedeutet Dateisortierung nicht, dass es sich um eine Dateisortierung handelt. Dies wird hauptsächlich durch den Parameter sort_buffer_size und die Ergebnismengengröße bestimmt.
Tatsächlich zeigt diese Situation, dass MySQL Sortierung verwendet. Die Verwendung von Dateisortierung erfolgt häufig in der Reihenfolge „Reihenfolge nach“, „Gruppieren nach“, „Unterscheiden“, „Verbinden“ usw.
Es gibt drei Hauptmethoden, um die Sortierung intern in MySQL zu implementieren: reguläre Sortierung, optimierte Sortierung und Prioritätswarteschlangensortierung.
CREATE TABLE t1(id int, col1 varchar(64), col2 varchar(64), col3 varchar(64), PRIMARY KEY(id),key(col1,col2)); SELECT col1,col2,col3 FROM t1 WHERE col1>100 ORDER BY col2;
Bitte beachten Sie den Unterschied zwischen diesen drei Sortierungen:
Konventionelle Sortierung
(1) .Holen Sie sich Datensätze, die die WHERE-Bedingung erfüllen, aus Tabelle t1
(2). Nehmen Sie für jeden Datensatz den Primärschlüssel + Sortierschlüssel (id, col2) des Datensatzes und legen Sie ihn in den Sortierpuffer
( 3). Wenn der Sortierpuffer alle (id, col2)-Paare speichern kann, die die Bedingungen erfüllen, sortieren Sie sie andernfalls, wenn der Sortierpuffer voll ist, und verfestigen Sie sie in einer temporären Datei. (Der Sortieralgorithmus verwendet den Schnellsortierungsalgorithmus)
(4). Wenn beim Sortieren temporäre Dateien generiert werden, müssen Sie den Zusammenführungssortierungsalgorithmus verwenden, um sicherzustellen, dass die Datensätze in den temporären Dateien in Ordnung sind
( 5). Führen Sie den obigen Vorgang in einer Schleife aus, bis alle Datensätze, die die Bedingungen erfüllen, an der Sortierung beteiligt sind
(6) und verwenden Sie die ID um die Spalten abzurufen, die von SELECT (col1,col2,col3) zurückgegeben werden müssen
(7) Geben Sie den erhaltenen Ergebnissatz an den Benutzer zurück.
Aus dem obigen Prozess hängt die Verwendung der Dateisortierung hauptsächlich davon ab, ob der Sortierpuffer das zu sortierende Paar (id, col2) aufnehmen kann. Die Größe dieses Puffers wird durch den Parameter sort_buffer_size gesteuert. Darüber hinaus sind für eine Sortierung zwei E/As erforderlich, eine zum Abrufen von (id, col2) und die zweite zum Abrufen von (col1, col2, col3). Da die zurückgegebene Ergebnismenge nach col2 sortiert ist, sind die IDs nicht in der richtigen Reihenfolge. Beim Angeln nach (col1, col2, col3) mit der ID wird eine große Menge zufälliger E/A generiert. Eine Optimierung für MySQL selbst besteht zum zweiten Mal darin, die IDs vor dem Abrufen zu sortieren und in den Puffer zu legen. Die Größe dieses Puffers wird durch den Parameter read_rnd_buffer_size gesteuert, und dann werden die Datensätze in geordneter Weise abgerufen und zufällige E/A-Werte in umgewandelt sequentielles IO.
b. Optimierte Sortierung
Zusätzlich zur Sortierung selbst erfordert die herkömmliche Sortiermethode zwei zusätzliche IOs. Im Vergleich zur herkömmlichen Sortierung reduziert die optimierte Sortiermethode den zweiten IO. Der Hauptunterschied besteht darin, dass der Sortierpuffer nicht (id, col2), sondern (col1, col2, col3) ist. Da der Sortierpuffer alle für die Abfrage erforderlichen Felder enthält, kann er nach Abschluss der Sortierung direkt zurückgegeben werden, ohne dass die Daten erneut abgerufen werden müssen. Der Preis dieser Methode besteht darin, dass die Anzahl der (col1, col2, col3), die in einem Sortierpuffer derselben Größe gespeichert werden können, kleiner ist als (id, col2). Wenn der Sortierpuffer nicht groß genug ist, können temporäre Dateien gespeichert werden geschrieben werden müssen, was zusätzliche E/A verursacht. Natürlich stellt MySQL den Parameter max_length_for_sort_data bereit. Nur wenn das sortierte Tupel kleiner als max_length_for_sort_data ist, kann die optimierte Sortiermethode verwendet werden.
c. Sortierung der Prioritätswarteschlange
Um das endgültige Sortierergebnis zu erhalten, müssen wir in jedem Fall alle Datensätze sortieren, die die Bedingungen erfüllen, bevor wir sie zurücksenden. Gibt es also im Vergleich zur Optimierung der Sortiermethode noch Optimierungspotenzial? Version 5.6 hat die Order by limit M, N-Anweisung auf räumlicher Ebene optimiert und eine neue Sortiermethode hinzugefügt – die Prioritätswarteschlange, die mithilfe der Heap-Sortierung implementiert wird. Die Eigenschaften des Heap-Sortieralgorithmus können das Sortierproblem der Grenze M, N lösen. Obwohl alle Elemente weiterhin an der Sortierung teilnehmen müssen, wird nur der Sortierpufferraum von M + N Tupeln benötigt. Für Szenarien, in denen M und N vorhanden sind klein. Grundsätzlich besteht kein Problem, dass temporäre Dateien für die Zusammenführungssortierung aufgrund unzureichenden Sortierpuffers erforderlich sind. Für die aufsteigende Reihenfolge wird ein großer oberer Heap verwendet, und die Elemente im endgültigen Heap bilden die kleinsten N Elemente. Für die absteigende Reihenfolge wird ein kleiner oberer Heap verwendet, und die Elemente im endgültigen Heap bilden die größten N Elemente.
Das obige ist der detaillierte Inhalt vonMySQL-Sortierungsunterschied. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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, 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.

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 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.

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

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

Der Schlüssel zur eleganten Installation von MySQL liegt darin, das offizielle MySQL -Repository hinzuzufügen. Die spezifischen Schritte sind wie folgt: Laden Sie den offiziellen GPG -Schlüssel von MySQL herunter, um Phishing -Angriffe zu verhindern. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting
