Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

Eine Geschichte über die Datenbankleistung

Während des Interviews wird das Thema Datenbanken in gewissem Umfang besprochen, z. B. „Wie gut kennen Sie sich mit Datenbanken aus?“ Wann wird die Leistung der Datenbank am meisten getestet? Im Allgemeinen beim Lesen und Schreiben großer Datenmengen. Große Werbeaktivitäten im E-Commerce sind der Zeitpunkt, um die Leistung jeder Datenbank zu testen.

Bei Webservern können wir bei großen Datenmengen die Belastung eines einzelnen Servers einfach durch horizontale Erweiterung reduzieren. Bei Datenbankservern ist das jedoch nicht so einfach. Sie können nicht einfach horizontal erweitert werden, was auch gegen die Prinzipien der Datenbankintegrität und -konsistenz verstößt. Wie sollte also unsere Datenbankarchitektur aufgebaut sein?

Bei großen Werbemaßnahmen ist alles vergeblich, egal wie gut das Produkt ist oder wie erfolgreich die Planung ist, wenn keine stabile Datenbank und Serverumgebung vorhanden ist.

Beispiel einer Datenbankarchitektur

Wie in der Abbildung gezeigt, gibt es zwischen dem Master- und dem Slave-Server keine Master-Slave-Replikationskomponente. Das heißt, wenn der Master-Server ausfällt, ist es schwierig, den Master-Server zu wechseln. Dies erfordert, dass der DBA den Slave-Server mit den neuesten Daten von den Slave-Servern auswählt, ihn zum Master-Server befördert und andere Slave-Server synchronisiert. Der Zeitaufwand dieses Prozesses ist ebenfalls sehr hoch.

Darüber hinaus stellen zu viele Slave-Server bei großem Geschäftsvolumen auch eine gewisse Herausforderung für die Netzwerkkarte des Hauptservers dar.

Mithilfe der Clusterüberwachungsinformationen können wir verstehen, was die Datenbankleistung beeinflusst.

Die Antwort ist ja. Im Allgemeinen sind die Hauptgründe QPS und TPS, Parallelität (die Anzahl der gleichzeitig verarbeiteten Anfragen, um Verwechslungen mit der Anzahl gleichzeitiger Verbindungen zu vermeiden), Festplatten-E/A und zu hohe Lesevorgänge.

Ein Tipp: Am besten verzichten Sie auf die Datensicherung in der Hauptdatenbank, zumindest brechen Sie derartige Pläne vor größeren Aktionen ab.

Faktoren, die die Datenbank beeinflussen

  • SQL-Abfragegeschwindigkeit
  • Server-Hardware
  • Netzwerkkartenverkehr
  • Festplatten-E/A

Ultrahohe QPS und TPS

Risiko: Ineffizientes SQL (QPS: pro Sekunde verarbeitete Abfragen)

Hohe CPU-Auslastung und hohe Parallelität

Risiko: Eine große Anzahl gleichzeitiger Verbindungen (die Anzahl der Datenbankverbindungen ist ausgeschöpft (max_connections ist standardmäßig auf 100 eingestellt))

Risiko: Extrem hohe CPU-Auslastung (Ausfallzeit aufgrund von CPU-Erschöpfung)

Festplatten-E/A

Risiko: Die Disk-IO-Leistung sinkt plötzlich (verwenden Sie schnellere Festplattengeräte)

Risiko: Andere geplante Aufgaben, die viel Festplattenleistung verbrauchen (geplante Aufgaben anpassen)

Netzwerkkartenverkehr

Risiko: Netzwerkkarten-IO ist voll (1000 MB/8 = 100 MB)

So vermeiden Sie, dass keine Verbindung zur Datenbank hergestellt werden kann:

1. Reduzieren Sie die Anzahl der Slave-Server
2. Führen Sie hierarchisches Caching durch
3. Vermeiden Sie die Verwendung von „select *“ für Abfragen
4. Unternehmensnetzwerk und Servernetzwerk trennen

Das könnte Sie auch interessieren:
  • Nutzungs- und Leistungsoptimierungstechniken für die Aggregatfunktion „count“ in MySQL
  • Detaillierte Erklärung der Gründe und Optimierungen für den großen Offset, der die Leistung bei MySQL-Abfragen beeinträchtigt
  • Beispiel zur Optimierung der MySQL-Einfügeleistung
  • Umfassende Referenz zur MySQL-Leistungsoptimierungsmethode, von der CPU über die Dateisystemauswahl bis hin zur mysql.cnf-Parameteroptimierung
  • Eine kurze Diskussion über die Unterschiede zwischen MySQL und MariaDB (Leistungsvergleich zwischen MariaDB und MySQL)
  • Optimierung der Leistung von Paging-Abfragen für MySQL mit mehreren zehn Millionen Daten
  • Untersuchung der MySQL-Paging-Leistung
  • Detaillierte Erläuterung der Leistungsoptimierung für MySQL-Batch-SQL-Einfügungen
  • Zusammenfassung mehrerer wichtiger Methoden zur Berechnung und Optimierung des Leistungsindex für MySQL

<<:  Vue implementiert den Anwesenheitskalender von DingTalk

>>:  Keepalived+Nginx+Tomcat-Beispielcode zur Implementierung eines hochverfügbaren Webclusters

Artikel empfehlen

Docker installiert Elasticsearch7.6-Cluster und legt Passwort fest

Ab Elasticsearch 6.8 dürfen kostenlose Benutzer d...

Nginx-Beispielcode zur Implementierung dynamischer und statischer Trennung

In Kombination mit dem Szenario in diesem Artikel...

Ubuntu 18.04 Touchpad per Befehl deaktivieren/aktivieren

Unter Ubuntu kommt es häufig vor, dass sich das T...

Verständnis des synchronen oder asynchronen Problems von setState in React

Inhaltsverzeichnis 1. Ist setState synchron? asyn...

MySQL: Praktische Erfahrung mit der Verwendung der Insert-Anweisung

Inhaltsverzeichnis 1. Mehrere Syntaxen von Insert...

js realisiert das dynamische Laden von Daten durch Wasserfallfluss

In diesem Artikel erfahren Sie den spezifischen C...

Grafische Erläuterung der Lösungen zur Frontend-Verarbeitung kleiner Symbole

Vorwort Bevor wir mit diesem Artikel beginnen, be...

So installieren Sie Docker CE auf Ubuntu 18.04 (Community Edition)

Deinstallieren Sie alte Versionen Sollten Sie zuv...

Berechnungstabelle für die RGBA-Alpha-Transparenzkonvertierung

Konvertierung zwischen RGBA- und Filterwerten unt...

Syntax-Alias-Problem basierend auf Löschen in MySQL

Inhaltsverzeichnis MySQL-Löschsyntax-Aliasproblem...

MySQL-Partitionierungspraxis mit Navicat

MySQL-Partitionierung ist hilfreich bei der Verwa...