Kostenlose Lernempfehlung: MySQL-Video-Tutorial
Artikelverzeichnis
QPS & TPS: Je höher der Wert, desto besser. Parallelität: Die Anzahl der gleichzeitig verarbeiteten Anfragen. CPU-Auslastung: Je niedriger, desto besser.
Disk IO: Je höher die Lese- und Schreibleistung, desto besser.Hinweis: Generell wird Unternehmen davon abgeraten, vor und nach größeren Werbeaktionen Datenbanksicherungen auf der Hauptdatenbank durchzuführen oder solche Pläne vor Großveranstaltungen abzubrechen, da dies die Leistung des Servers ernsthaft beeinträchtigen würde.
2 Faktoren, die die Datenbank beeinflussen
Es gibt viele Faktoren, die die Datenbank beeinflussen, wie zum Beispiel: SQL-Abfragegeschwindigkeit, Serverhardware, Netzwerkkartenverkehr, Festplatten-E/A usw. Wir werden es später im Detail erklären Feedback aus einigen Überwachungsinformationen, die uns gegeben wurden, und wie wir diese optimieren sollten.
2.1 Ultrahohe QPS und TPS
Aufgrund ineffizienter SQL besteht häufig das Risiko extrem hoher QPS und TPS. Während eines allgemeinen Aktionszeitraums wird die Anzahl der Besuche auf der Website stark erhöht und auch die QPS und TPS der Datenbank werden erhöht.
Was ist QPS: Pro Sekunde verarbeitete Abfragen. Wenn wir beispielsweise eine CPU haben und eine SQL in 10 ms verarbeiten können, können wir 100 SQLs in 1 Sekunde verarbeiten, QPS<=100. Wenn wir jedoch nur eine SQL in 100 ms verarbeiten, können wir 10 SQLs in 1 verarbeiten Zweitens, QPS< =10, diese beiden Situationen sind sehr unterschiedlich, also versuchen Sie, die SQL-Leistung zu optimieren.
2.2 Massive Parallelität und extrem hohe CPU-Auslastung
Was sind also die Risiken in dieser Situation? Bei hoher Parallelität kann die Anzahl der Datenbankverbindungen erschöpft sein. Versuchen Sie in diesem Fall, die Datenbankparameter
auf einen größeren Wert einzustellen (der Standardwert ist 100). Wenn dieser Wert überschritten wird, wird ein Fehler von 500 angezeigt Situation gemeldet werden.Bei extrem hoher CPU-Auslastung kann es aufgrund der Erschöpfung der CPU-Ressourcen zu Ausfallzeiten kommen.
2.3 Disk IO
Einer der Engpässe der Datenbank ist Disk IO, was die folgenden Risiken mit sich bringt:
Die Leistung von Disk IO sinkt plötzlich Dies passiert oft, wenn die heißen Daten größer sind als der verfügbare Speicher der Server. Normalerweise kann diese Situation nur durch die Verwendung eines schnelleren Festplattengeräts gelöst werden.
Andere geplante Aufgaben, die viel Festplattenleistung verbrauchen Wir haben dies auch oben erwähnt. Es ist am besten, die Sicherung auf der Master-Datenbank vor dem großen Verkauf zu vermeiden oder sie auf dem Slave-Server durchzuführen, geplante Aufgaben anzupassen und die Festplatte auszuführen Wartung. max_connections
Offensichtlich besteht bei übermäßigem Netzwerkkartenverkehr das Risiko, dass die Netzwerkkarten-E/A voll ist.
Die allgemeine Netzwerkkarte ist eine Gigabit-Netzwerkkarte (1000 MB/8 ≈ 100 MB).Wenn die Anzahl der Verbindungen die maximale Kapazität der Netzwerkkarte überschreitet, kann der Dienst keine Verbindung herstellen. Wie können wir also verhindern, dass keine Verbindung hergestellt werden kann? die Datenbank:
select *
zum Abfragen. 2,5 große Uhr
Welche Art von Uhr kann man als große Uhr bezeichnen? Tatsächlich ist alles relativ und es wird unterschiedliche Einschränkungen für verschiedene Speicher-Engines geben. Die Datenspeicherung wie NoSQL begrenzt die Anzahl der Zeilen in der Tabelle nicht. Theoretisch kann sie so lange gespeichert werden, wie es die Festplattenkapazität zulässt. Wenn jedoch die Anzahl der Zeilen in einer Tabelle mehrere zehn Millionen Zeilen überschreitet, hat dies große Auswirkungen auf die Leistung der Datenbank. Dann können wir die Eigenschaften großer Tabellen zusammenfassen:
Aber sogar Wenn es die oben genannten Merkmale erfüllt, hat dies möglicherweise auch keine großen Auswirkungen auf die Leistung unserer Datenbank. Daher ist diese Aussage beispielsweise in der Protokolltabelle einer allgemeinen Datenbank relativ, selbst wenn die Anzahl der aufgezeichneten Zeilen groß ist Die Dateigröße ist groß, wir fügen sie im Allgemeinen nur hinzu und fragen sie ab, nicht Es erfordert eine große Anzahl von i-Änderungs- und Löschvorgängen, sodass es keinen großen Einfluss auf die Datenbankleistung hat.
Aber wenn es eines Tages aufgrund geschäftlicher Veränderungen notwendig wird, Spalten zu dieser 10G-Protokolltabelle hinzuzufügen, dann wird der Arbeitsaufwand zweifellos enorm sein.
2.5.1 Die Auswirkungen großer Tabellen auf Abfragen
Große Tabellen führen häufig zu langsamen Abfragen, was es schwierig macht, die erforderlichen Daten innerhalb eines bestimmten Zeitraums herauszufiltern.
Beispielsweise gibt es in einer Protokolltabelle mit mehreren zehn Millionen Daten ein Feld namens Bestellquelle, das die Plattform aufzeichnet, auf der die Bestellung generiert wurde. Wenn das Unternehmen dies zu Beginn nicht benötigt, hat dies keine Auswirkungen auf die Datenbankleistung. Aufgrund späterer Geschäftsanforderungen muss jedoch überprüft werden, von welcher Plattform diese zig Millionen Daten stammen. Das ist ein großes Problem.
Da es für diese Aufträge nur wenige Quellkanäle gibt, ist der Unterschied sehr gering. Wenn Sie also bestimmte Daten aus mehreren zehn Millionen Daten abfragen, verbraucht dies viel Festplatten-E/A und verringert die Effizienz der Festplatte erheblich. Jedes Mal, wenn ein Benutzer eine Bestellung ansieht, wird die Quelle der Bestellung aus der Datenbank abgefragt, was zu einer großen Anzahl langsamer Abfragen führt.
2.5.2 Die Auswirkungen großer Tabellen auf DDL-Operationen
Die Auswirkungen großer Tabellen auf DDL-Operationen, welche Risiken bringt dies für uns mit sich?
2.5.3 Umgang mit großen Tabellen in der Datenbank
2.6 Große Transaktionen
2.6.1 Was ist eine Transaktion
Transaktionen sind eines der wichtigen Merkmale, die das Datenbanksystem von allen anderen Dateisystemen unterscheiden.
2.6.2 ATOMICITY von Transaktionen
Definition: Eine Transaktion muss als unteilbare Mindestarbeitseinheit betrachtet werden. Alle Vorgänge in der gesamten Transaktion werden entweder erfolgreich übermittelt oder alle sind fehlgeschlagen. Bei einer Transaktion ist es unmöglich, nur einen Teil der Vorgänge auszuführen.
Beispiel:
A möchte 1.000 Yuan an B überweisen. Wenn 1.000 Yuan vom Konto von A abgebucht werden, wird der Kontostand von A in der Datenbank um 1.000 abgezogen, aber wenn er zum Kontostand von B addiert wird, schlägt der Server fehl auf das Konto von A zurückgreifen, die Atomizität der Transaktion aufrechterhalten und entweder gemeinsam erfolgreich sein oder scheitern.
2.6.3 Transaktionskonsistenz (KONSISTENZ)
Definition: Konsistenz bedeutet, dass eine Transaktion die Datenbank von einem Konsistenzzustand in einen anderen Konsistenzzustand umwandelt, und zwar vor Beginn der Transaktion und nach Ende der Transaktion. Die Integrität der Daten in der Datenbank ist nicht gefährdet.
Beispiel:
Die 1000 Blöcke von A in der Bank werden an B übertragen, der Kontostand von A ist 0, der Kontostand von B ändert sich von 0 auf 1000, aber von Anfang bis Ende ist A+B = 1000 (Kontostand von A) + 0 (Kontostand von B) = 0 (Saldo von A) + 1000 (Saldo von B), das heißt, der Gesamtsaldo von A und B bleibt unverändert, immer noch 1.000 Yuan von Anfang bis Ende.
2.6.4 Transaktionsisolation (ISOLATION)
Definition: Isolation erfordert, dass die Änderung von Daten in der Datenbank durch eine Transaktion für andere Transaktionen nicht sichtbar ist, bevor sie abgeschlossen ist.
Beispiel:
A in der Bank hebt 500 Yuan vom Kontostand von A ab. Bevor die Abhebungstransaktion übermittelt wird, wird eine Transaktion ausgeführt, um den Kontostand von A abzufragen. Da die Auszahlungstransaktion vor der Übermittlung noch nicht übermittelt wurde, ist der Transaktionsprozess für andere Unternehmen unsichtbar.
Vier im SQL-Standard definierte Isolationsstufen
READ UNCOMMITED
READ COMMITED
WIEDERHOLBARES LESEN
zeige Variablen wie „%iso%“
show variables like '%iso%'
set session tx_isolation='read-committed'
set session tx_isolation='read-committed'
Uncommitted Read> ; Serialisierbar
Definition: Sobald eine Transaktion festgeschrieben wurde, werden ihre Änderungen dauerhaft in der Datenbank gespeichert. Selbst wenn das System zu diesem Zeitpunkt abstürzt, gehen die übermittelten geänderten Daten nicht verloren (mit Ausnahme physischer Faktoren wie Festplattenschäden). Beispiel:
Benutzer A zahlt 1.000 Yuan auf sein Konto ein, auch wenn das Banksystem nach der Wiederherstellung abstürzt, es sei denn, A bearbeitet den Saldo. Dies ändert sich nicht ist die Dauerhaftigkeit der Transaktion.
2.6.7 Was ist ein Großereignis?
So viel gesagt: Was ist ein Großereignis? Unter großen Transaktionen versteht man Transaktionen, deren Ausführung lange dauert und die große Datenmengen verarbeiten. Es gibt beispielsweise ein Finanzprodukt, das jeden Tag das Einkommen aller Benutzer zählt und es auf den Kontostand des Benutzers aktualisiert, wenn ein Rollback fällig ist Bei einem Fehler in der Mitte wird die für die Transaktion erforderliche Zeit noch unermesslicher. Wenn der Aktualisierungsprozess nicht berücksichtigt wird, wird das Guthaben des Benutzers gesperrt, was zu dem Problem führt, dass nicht alle Benutzer das Guthaben verwenden können.
Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)
Das obige ist der detaillierte Inhalt vonBeherrschen Sie MYSQL Advanced. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!