Warum optimieren? ?Da die Datenmenge zu groß ist, steigen die Daten von der Projektbereitstellung bis zur Benutzernutzung täglich um Hunderttausende, was eine sehr hohe Belastung für den Server darstellt. Das Internet hat schon immer nach hoher Leistung gestrebt, aber mit zunehmendem Unternehmensumfang und steigender Benutzerzahl wird die Leistung des Servers immer schlechter, sodass wir höhere Anforderungen an die Datenbank stellen müssen. Wo soll ich anfangen? ?Erstens ist es die Abfragegeschwindigkeit. Wir gehen davon aus, dass wir auch dann noch eine Abfragegeschwindigkeit von Millionen erreichen können, wenn das Datenvolumen die TB-Ebene erreicht. Zweitens geht es um Parallelität. Wir verlangen, dass es Tausende oder sogar Zehntausende gleichzeitiger Zugriffe gleichzeitig verarbeiten kann und außerdem mit Redis, MQ usw. zusammenarbeiten muss. Drittens: Hohe Verfügbarkeit. Da das Unternehmen weiter wächst, müssen wir jederzeit bereit sein, den Server zu erweitern, möglicherweise von Dutzenden auf Hunderte oder sogar Tausende von Servern. Daher müssen wir ihn mit einem MySQL-Cluster ausstatten. Viertens, Transaktionssicherheit: Wie kann die Lese-/Schreibkonsistenz gewährleistet werden, wenn im Unternehmen viele gleichzeitige Zugriffe stattfinden? ? ? Die Sicherheit der Transaktionen gewährleisten? ? ? Beziehen Sie sich auf die Idee des Multithreading. . Was ist die Lösung? ? ?Als Erstes müssen Sie darüber nachdenken, welche Art von Speicher-Engine verwendet werden soll, denn die Leistung der Speicher-Engine hängt davon ab, ob Sie ein Auto, ein Flugzeug oder einen Panzer verwenden. Jede Engine hat ihre spezielle Funktion. In der Wirtschaft werden zwei häufig verwendete Typen verwendet: INNODB und MYISAM. Wie man wählt? ? ?Wenn wir geschäftlich nicht zu viele Lese- und Schreibanforderungen haben und hauptsächlich Abfragen verwenden, verwenden wir MyISAM. Wenn wir hohe Anforderungen an die Transaktionsintegrität, hohe Parallelitätsanforderungen, häufige Hinzufügungen und Löschungen sowie häufige Lese- und Schreibvorgänge haben, ist es besser, INNODB zu verwenden. Zweitens müssen wir die Abfrage beschleunigen, also müssen wir Indizes zu speziellen Feldern der Tabelle hinzufügen. Das Prinzip der Indizierung besteht darin, die Speicherstruktur der Daten zu ändern. Hier gibt es zwei Typen: Der erste ist BTree und der zweite ist B+Tree. In unserem Unternehmen verwenden wir im Allgemeinen B+Tree. Eine Funktion von BTree besteht darin, dass sowohl der Stammknoten als auch der Blattknoten Daten speichern. Dies führt beispielsweise dazu, dass der Blattknoten der untersten Ebene abgefragt und die Daten des Stammknotens Schicht für Schicht gelesen werden, was die Anzahl der Festplatten-E/A-Vorgänge erhöht und den Druck auf die Datenbank unsichtbar erhöht. Wir müssen also B+Tree verwenden Drittens implementieren wir eine Hochverfügbarkeitslösung. Hier statten wir den Datenbankdienst mit einem Master-Slave-Strukturcluster aus, um den Lese- und Schreibdruck zu verringern. Das vierte ist das Sicherheitsproblem. Sie können hier auf das Thread-Sicherheitsproblem verweisen, z. B. wie Sie einen hohen gleichzeitigen Zugriff lösen können. ? Wie können wir die Integrität von Transaktionen sicherstellen? ? Wie RocketMQ beinhaltet es auch Transaktionsnachrichten. Wie lassen sich solche Probleme vermeiden? Wir können es sperren. Nachfolgend sind die Klassifizierungen der Schlösser aufgeführt. SQL-Optimierung1. Vermeiden Sie vollständige Tabellenscans bei Abfragen. Erwägen Sie zunächst das Hinzufügen von Indizes für die Felder „Where“ und „Order By“. 2. Vermeiden Sie die Verwendung von NULL-Werten im Where-Feld. Versuchen Sie daher, beim Entwerfen von Tabellen NOT NULL-Einschränkungen zu verwenden. Einige Daten sind standardmäßig NULL, und Sie können den Standardwert auf 0 oder -1 festlegen 3. Vermeiden Sie die Verwendung der Operatoren != oder <> in der Where-Klausel. MySQL verwendet nur Indizes für <, <=, =, >, >=, BETWEEN, IN und manchmal LIKE. 4. Vermeiden Sie die Verwendung von OR zum Verbinden von Bedingungen in „where“, da dies sonst dazu führen kann, dass die Engine den Index verlässt, um einen vollständigen Tabellenscan durchzuführen. Sie können UNION für kombinierte Abfragen verwenden. Wähle die ID aus t, wobei Num = 30 ist. Union: Wähle die ID aus t, wobei Num = 40 ist. 5. Versuchen Sie, Funktions- oder Ausdrucksoperationen in der Where-Klausel zu vermeiden 6. Am besten verwenden Sie nicht „select * from t“. Ersetzen Sie „*“ durch eine konkrete Feldliste und geben Sie keine ungenutzten Felder zurück. 7. Verwenden Sie in und nicht in mit Vorsicht, sonst führt dies zu einem vollständigen Tabellenscan, wie z. B. select id from t where num IN(1,2,3) Wenn die Werte kontinuierlich sind, wird empfohlen, zwischen und zu verwenden, select id from t where between 1 and 3; 8. select id from t where col like %a%; % auf der linken Seite der Fuzzy-Abfrage führt zu einer vollständigen Tabellensuche. Wenn eine Volltextsuche erforderlich ist, können Sie eine Volltextsuchmaschine wie es, slor verwenden 9. Begrenzen Sie die Anzahl der Offsetzeilen. Vermeiden Sie bei Paging-Abfragen möglichst große Offsets. Beispielsweise entspricht das Limit 10000,10 dem Verwerfen der ersten 10.000 Zeilen und dem anschließenden Übernehmen von 10 Zeilen. Sie können einige Bedingungen zum Filtern hinzufügen (um die Überprüfung abzuschließen), Sie sollten das Limit jedoch nicht verwenden, um die abgefragten Daten zu überspringen. Dies ist ein Problem, bei dem ==Offset nutzlose Arbeit verrichtet==. In tatsächlichen Projekten sollten wir große Seitenzahlen vermeiden und versuchen, Benutzer zum Filtern nach Bedingungen anzuleiten. ZusammenfassenDies ist das Ende dieses Artikels zur Leistungsoptimierung von MySQL-Datenbanken. Weitere relevante Inhalte zur Leistungsoptimierung von MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Beispiel für das Hoch- und Herunterladen von Dateien im Front-End mit Vue+Express
1. Was ist ein Index? Ein Index ist eine Datenstr...
einführen HTML stellt die kontextuelle Struktur u...
Inhaltsverzeichnis BOM (Browserobjektmodell) 1. F...
【Autor】 Liu Bo: Leitender Datenbankmanager im Ctr...
1. Installation der dekomprimierten Version (1). ...
Der übergeordnete Knoten des übergeordneten Knoten...
Schritte: 1. MySQL-Datenbank installieren 1. Lade...
Was ist ein absteigender Index? Sie kennen sich v...
Inhaltsverzeichnis MySQL-Absturzwiederherstellung...
Die bidirektionale MySQL-Sicherung wird auch als ...
Vorwort Bootstrap, das beliebteste Front-End-Entw...
Früher habe ich zur Handhabung dieser Art von Nut...
Überblick Ich verwende Docker seit über einem Jah...
MySQL-Datenbanken werden häufig verwendet, insbes...
Es gibt eine Frage, die Webdesigner schon lange b...