1. Langsame Abfrage aufgrund fehlenden oder ungültigen Indexes Wenn Sie in einer Tabelle mit mehreren zehn Millionen Daten eine nicht indizierte Spalte als Abfragebedingung verwenden, wird die Abfrage in den meisten Fällen sehr zeitaufwändig sein. Diese Abfrage ist zweifellos eine langsame SQL-Abfrage. Daher ist es bei Abfragen mit großen Datenmengen notwendig, entsprechende Indizes zu erstellen, um die Abfragen zu optimieren. Obwohl Indizes häufig erstellt werden, können sie in bestimmten Szenarien dennoch fehlschlagen. Daher sind Indexfehler auch eine der Hauptursachen für langsame Abfragen. 2. Sperren Warten Zu den häufig verwendeten Speicher-Engines zählen InnoDB und MyISAM. Erstere unterstützt Zeilensperren und Tabellensperren, während letztere nur Tabellensperren unterstützt. Wenn Datenbankoperationen basierend auf Tabellensperren implementiert werden, stellen Sie sich vor, dass, wenn eine Auftragstabelle beim Aktualisieren gesperrt werden muss, eine große Anzahl anderer Datenbankoperationen (einschließlich Abfragen) sich in einem Wartezustand befinden, was die Parallelitätsleistung des Systems ernsthaft beeinträchtigt. Derzeit ist die von der InnoDB-Speicher-Engine unterstützte Zeilensperre besser für Szenarien mit hoher Parallelität geeignet. Beim Einsatz der Speicher-Engine InnoDB muss allerdings besonders auf die Möglichkeit geachtet werden, dass Zeilensperren zu Tabellensperren aufgewertet werden. Bei Stapelaktualisierungsvorgängen werden Zeilensperren wahrscheinlich zu Tabellensperren aufgewertet. MySQL geht davon aus, dass die Effizienz der Transaktionsausführung abnimmt, wenn eine große Anzahl von Zeilensperren für eine Tabelle verwendet wird, was dazu führen kann, dass andere Transaktionen lange warten müssen und es zu mehr Sperrkonflikten kommt, was wiederum zu einer ernsthaften Leistungsverschlechterung führt. Daher rüstet MySQL Zeilensperren auf Tabellensperren auf. Darüber hinaus sind Zeilensperren Sperren, die auf Indizes basieren. Wenn der bedingte Index während eines Aktualisierungsvorgangs fehlschlägt, wird die Zeilensperre in eine Tabellensperre umgewandelt. Daher führen Datenbankoperationen, die auf Tabellensperren basieren, dazu, dass SQL blockiert wird und wartet, was sich wiederum auf die Ausführungsgeschwindigkeit auswirkt. In einigen Fällen, in denen Aktualisierungsvorgänge (Einfügen\Aktualisieren\Löschen) größer oder gleich den Lesevorgängen sind, empfiehlt MySQL nicht die Verwendung der MyISAM-Speicher-Engine. Neben Sperrupgrades verfügen Zeilensperren im Vergleich zu Tabellensperren über eine feinere Granularität und verbesserte Parallelitätsfunktionen, bringen jedoch auch neue Probleme mit sich, nämlich Deadlocks. Achten Sie daher bei der Verwendung von Zeilensperren darauf, Deadlocks zu vermeiden. 3. Unangemessene SQL-Anweisungen Die Verwendung ungeeigneter SQL-Anweisungen ist auch eine der häufigsten Ursachen für langsames SQL. Sie sind beispielsweise daran gewöhnt, die SQL-Anweisungen <SELECT *> und <SELECT COUNT(*)> zu verwenden, in großen Datentabellen Paging-Abfragen mit <LIMIT M,N> zu verwenden und nicht indizierte Felder zu sortieren. Dies sind alle Wissenspunkte, die dieses Mal vorgestellt wurden. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Virtuelle Maschinen zwischen VMware Workstation und vSphere migrieren (Bild und Text)
>>: Beispiel für die Konvertierung eines flachen JavaScript-Arrays in eine Baumstruktur
Das Installations- und Verwendungstutorial für My...
Beim Erstellen einiger Seiten müssen wir häufig H...
30 kostenlose englische Ribbon-Schriftarten in hoh...
Inhaltsverzeichnis Vorwort Hintergrunddatenspleiß...
Inhaltsverzeichnis Text 1. Maschine vorbereiten 2...
Umfeld Centos 6.6 MySQL 5.7 Installieren Falls da...
Lassen Sie uns zunächst darüber sprechen, warum w...
Ich verwende hier das 64-Bit-System CentOS 7. Ich...
1. Systemumgebung Die Systemversion nach dem Yum-...
So lösen Sie das Problem, dass nach dem Neustart ...
Dieser Artikel erläutert anhand von Beispielen di...
Inhaltsverzeichnis 1. Einfaches Einbinden persist...
Inhaltsverzeichnis 1. Überprüfen Sie die Anzahl d...
Dieser Artikel ist Teil einer Sonderserie zu den ...
1. Bereiten Sie die Java-Umgebung vor, jdk1.8 Übe...