Hintergrund Die Menge neuer Daten in der Geschäftstabelle der Alibaba Cloud RDS für MySQL-Datenbank (MySQL Version 5.7) übersteigt 10 Millionen pro Monat. Da die Datenmenge weiter zunimmt, sind in unserem Geschäft die Abfragen großer Tabellen langsam. Während der Hauptgeschäftszeiten dauern langsame Abfragen der Hauptgeschäftstabelle mehrere zehn Sekunden, was das Geschäft ernsthaft beeinträchtigt. Programmübersicht 1. Datenbankdesign und Indexoptimierung Die MySQL-Datenbank selbst ist sehr flexibel, was zu unzureichender Leistung führt, die stark vom Tabellendesign und den Indexoptimierungsfähigkeiten des Entwicklers abhängt. Hier sind einige Optimierungsvorschläge
Übereinstimmungsregel für den Index ganz links Wie der Name schon sagt, ganz links zuerst. Beim Erstellen eines zusammengesetzten Index sollte die am häufigsten verwendete Spalte in der Where-Klausel je nach Geschäftsanforderungen ganz links platziert werden. Eine sehr wichtige Frage bei zusammengesetzten Indizes ist, wie die Reihenfolge der Spalten angeordnet werden soll. Wenn beispielsweise zwei Felder, c1 und c2, nach wo verwendet werden, sollte die Indexreihenfolge dann (c1, c2) oder (c2, c1) sein? Der richtige Ansatz besteht darin, Spalten mit weniger doppelten Werten an den Anfang zu stellen. Wenn beispielsweise 95 % der Werte in einer Spalte nicht doppelt vorhanden sind, kann diese Spalte im Allgemeinen an den Anfang gestellt werden.
2. Stellen Sie die Datenbank auf PloarDB-Lese-/Schreibtrennung um PolarDB ist die von Alibaba Cloud selbst entwickelte relationale Cloud-Datenbank der nächsten Generation, die 100 % mit MySQL kompatibel ist und eine Speicherkapazität von bis zu 100 TB hat. Eine einzelne Datenbank kann auf bis zu 16 Knoten erweitert werden, wodurch sie für eine Vielzahl von Datenbankanwendungsszenarien in Unternehmen geeignet ist. PolarDB verwendet eine Architektur, die Speicher und Datenverarbeitung trennt. Alle Datenverarbeitungsknoten teilen sich eine Kopie der Daten und bieten minutengenaue Konfigurationsupgrades und -upgrades, Fehlerbehebung auf zweiter Ebene, globale Datenkonsistenz sowie kostenlose Datensicherungs- und Notfallwiederherstellungsdienste. Cluster-Architektur, Trennung von Computing und Storage Trennung von Lesen und Schreiben Wenn eine Anwendung eine Clusteradresse verwendet, stellt PolarDB externe Dienste über eine interne Proxy-Schicht (Proxy) bereit. Die Anforderungen der Anwendung durchlaufen zuerst den Proxy, bevor sie auf den Datenbankknoten zugreifen. Die Proxy-Schicht kann nicht nur Sicherheitsauthentifizierung und -schutz durchführen, sondern auch SQL analysieren, Schreibvorgänge (wie Transaktionen, UPDATE, INSERT, DELETE, DDL usw.) an den Masterknoten senden und Lesevorgänge (wie SELECT) gleichmäßig auf mehrere schreibgeschützte Knoten verteilen, um eine automatische Lese-/Schreibtrennung zu erreichen. Für Anwendungen ist es so einfach wie die Verwendung einer einzelnen Punktdatenbank. In Offline-Hybrid-Szenarien: Verschiedene Dienste verwenden unterschiedliche Verbindungsadressen und unterschiedliche Datenknoten, um gegenseitige Auswirkungen zu vermeiden Bericht zum Sysbench-Leistungsstresstest: PloarDB 4 Kerne 16G 2 Einheiten PloarDB 8 Kerne 32G 2 Einheiten 3. Migrieren Sie historische Daten aus Shard-Tabellen zur MySQL 8.0 X-Engine-Speicher-Engine Die Geschäftstabelle speichert Daten für drei Monate (dies richtet sich nach den Anforderungen des Unternehmens), und die historischen Daten werden in Monatstabellen in die Speichertabelle der historischen Datenbank X-Engine aufgeteilt. Warum sollten wir uns für die Speichertabelle der X-Engine entscheiden? Was sind ihre Vorteile? Kosteneinsparungen: Die Speicherkosten von X-Engine betragen etwa die Hälfte der von InnoDB Der mehrstufige Speicher von X-Engine verbessert die QPS. Er verwendet eine hierarchische Speicherstruktur, um heiße und kalte Daten in verschiedenen Schichten zu speichern, und komprimiert standardmäßig die Schicht, in der sich kalte Daten befinden. X-Engine ist eine Datenbankspeicher-Engine für die Online-Transaktionsverarbeitung (OLTP), die von der Datenbankproduktabteilung von Alibaba Cloud entwickelt wurde.
4. Parallele Abfrage der Alibaba Cloud PloarDB MySQL 8.0-Version Nach der Aufteilung der Tabelle ist unser Datenvolumen immer noch groß, was unser Problem der langsamen Abfrage nicht vollständig löst, sondern nur die Größe unserer Geschäftstabelle verringert. Für diesen Teil der langsamen Abfrage müssen wir die parallele Abfrageoptimierung von PolarDB verwenden PolarDB MySQL 8.0 hat ein paralleles Abfrageframework eingeführt. Wenn die Menge der abgefragten Daten einen bestimmten Schwellenwert erreicht, wird das parallele Abfrageframework automatisch gestartet, was die Abfragezeit exponentiell reduziert. Die Daten werden auf der Speicherebene in verschiedene Threads aufgeteilt, und mehrere Threads berechnen parallel. Die Ergebnispipeline wird zum Hauptthread aggregiert, und schließlich führt der Hauptthread einige einfache Zusammenführungen durch und gibt sie an den Benutzer zurück, wodurch die Abfrageeffizienz verbessert wird. Parallele Abfragen sind auf die meisten SELECT-Anweisungen anwendbar, z. B. auf große Tabellenabfragen, Verknüpfungsabfragen für mehrere Tabellen und Abfragen mit großem Rechenaufwand. Bei sehr kurzen Abfragen ist der Effekt weniger dramatisch. Verwendung paralleler Abfragen: Die Hint-Syntax kann zur Steuerung einer einzelnen Anweisung verwendet werden. Wenn das System beispielsweise parallele Abfragen standardmäßig deaktiviert, aber eine langsame SQL-Abfrage mit hoher Frequenz beschleunigt werden muss, kann Hint zur Beschleunigung des spezifischen SQL verwendet werden. Wählen Sie /+PARALLEL(x)/ … FROM …; – x > 0 AUSWÄHLEN /*+ SET_VAR(max_parallel_degree=n) */ * VON … // n > 0 Abfragetest: Datenbankkonfiguration 16 Kerne 32G Einzeltabelle Datenvolumen übersteigt 30 Millionen Die Zeit vor der parallelen Abfrage betrug 4326 ms, und nachdem die parallele Abfrage hinzugefügt wurde, betrug sie 525 ms, was einer Leistungsverbesserung um das 8,24-fache entspricht. 5. Interaktive Analyse von Hologre Obwohl wir durch die Nutzung der parallelen Abfrageoptimierung die Effizienz langsamer Abfragen bei großen Tabellen verbessert haben, können wir bestimmte Anforderungen wie Echtzeitberichte und große Echtzeitbildschirme immer noch nicht erfüllen und können uns bei der Verarbeitung nur auf Big Data verlassen. 6. Nachtrag Die Optimierung großer Tabellen mit mehreren zehn Millionen Daten basiert auf Geschäftsszenarien und wird auf Kosten der Kosten optimiert. Es geht nicht darum, die Datenbank sofort horizontal aufzuteilen und zu erweitern. Dies wird enorme Herausforderungen für Betrieb, Wartung und Geschäft mit sich bringen und die Auswirkungen sind in vielen Fällen möglicherweise nicht gut. Unabhängig davon, ob unser Datenbankdesign, unsere Indexoptimierung und unsere Tabellenpartitionierungsstrategie vorhanden sind, sollten wir die geeignete Technologie auswählen, um sie entsprechend den Geschäftsanforderungen umzusetzen. Dies ist das Ende dieses Artikels über MySQL-Lösungen zur Optimierung großer Tabellen. Weitere relevante Inhalte zur Optimierung großer MySQL-Tabellen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Das Prinzip und die Implementierung der bidirektionalen Bindung in Vue2.x
>>: So überwachen Sie Tomcat mit LambdaProbe
Ich habe vorher ein Testprogramm geschrieben, in d...
Keil Da auf dem Computer eine relativ alte MySQL-...
In Bezug auf High Performance MySQL Version 3 (Ab...
Die goldene Regel Unabhängig davon, wie viele Per...
Es gibt zwei Hauptgründe, warum es schwierig ist,...
Sublimieren Sublime Text ist ein Code-Editor (Sub...
Wie lässt sich feststellen, worauf dies hinweist?...
Dieser Artikel beschreibt einen Vorschlag für ein...
In diesem Artikelbeispiel wird der spezifische JS...
Ein einfacher Linux-Ratespiel-Quellcode Spielrege...
Inhaltsverzeichnis 1. Hintergrund: 2. Gestaltungs...
Inhaltsverzeichnis 1. Was ist ein Betriebssystem?...
Konfigurationsmethode für die kostenlose Installa...
1. SVN-Server installieren yum installiere Subver...
Inhaltsverzeichnis 1. Einleitung 2. Schnittstelle...