Mysql
 sql >> Datenbank >  >> RDS >> Mysql

10 hilfreiche Tipps zur MySQL-Leistungsoptimierung

Wie alle anderen Datenbanken kann MySQL kompliziert sein und jederzeit aufhören, all Ihre Geschäfte und Aufgaben aufs Spiel zu setzen. Häufige Fehler liegen jedoch den meisten Problemen zugrunde, die die Leistung beeinträchtigen.

Um sicherzustellen, dass Ihr Server effizient und effektiv arbeitet, indem Sie eine stabile und konsistente Leistung bieten, müssen Sie die Fehler beseitigen, die häufig durch Subtilitäten in der Arbeitslast oder Konfigurationsfalle verursacht werden.

Mit wachsendem Datenvolumen wird es immer komplexer. Daher ist es wichtig, die Datenbanken gut zu optimieren, um ein effizientes Endbenutzererlebnis zu bieten. Die MySQL-Leistungsoptimierung ist die ultimative Lösung, da sie dazu beitragen wird, Lösungen für diese Datenbankprobleme bereitzustellen.

MySQL-Leistungsoptimierung

In diesem Artikel finden Sie einige hilfreiche Tipps zur Verwendung der MySQL-Leistungsoptimierung. Dies wird Ihnen helfen, die beste Leistung aus Ihrem MySQL herauszuholen.

Schritt 1:Verwenden Sie MySQL nicht als Warteschlange

Ohne Ihr Wissen können sich Warteschlangen und warteschlangenähnliche Muster in Ihre Anwendung einschleichen. Ein typisches Beispiel ist das Markieren von E-Mails als nicht gesendet, das Senden und das anschließende Markieren als gesendet. Dies ist ein häufiges, aber selten unbemerktes Problem, das die meisten Benutzer ignorieren.

Sie verursachen zwei große Leistungsschwierigkeiten:

  1. Sie serialisieren Ihre Arbeitslast und verhindern so, dass Aufgaben in paralleler Reihenfolge abgeschlossen werden. Außerdem führen sie oft zu einer Tabelle, die unfertige und historische Daten von Aufträgen enthält, die vor langer Zeit bearbeitet wurden. Dies verlangsamt im Allgemeinen die Verarbeitungsgeschwindigkeit und den Prozess.
  2. Beides fügt der Anwendung Latenz hinzu und lädt MySQL.

Schritt 2:Erstellen Sie ein Profil Ihrer Arbeitsbelastung

Die Erstellung eines Workload-Profils ist unerlässlich, da es Ihnen hilft zu verstehen, wie Ihr Server funktioniert und wie viel Zeit er mit der Verarbeitung von Aufgaben verbringt. Das beste Tool, um Ihnen dabei zu helfen, ist der MySQL Enterprise Monitors Query Analyzer aus dem Percona-Toolkit.

Hinweis: Nur für Linux-Benutzer verfügbar

Die Tools können die vom Server ausgeführten Abfragen erfassen und eine Tabelle sortierter Aufgaben in absteigender Reihenfolge der Antwortzeit zurückgeben.

Durch die Profilerstellung Ihrer Workload werden die teuersten Abfragen für eine weitere Optimierung offengelegt. Die Zeit ist am kritischsten, weil es darauf ankommt, wie schnell sie beim Ausgeben einer Abfrage abgeschlossen wird.

Die Profiling-Tools gruppieren auch ähnliche Abfragen, wodurch Sie die langsamen und die schnellen Abfragen sehen können, die jedoch viele Male ausgeführt werden.

Schritt 3:Die vier grundlegenden Ressourcen verstehen

CPU, Arbeitsspeicher, Festplatte und Netzwerk sind die vier grundlegenden Ressourcen, die für das Funktionieren einer Datenbank erforderlich sind. Daher ist die Leistung der Datenbank wahrscheinlich schlecht, wenn eine dieser Ressourcen überlastet, schwach oder fehlerhaft ist.

Sie sollten immer sicherstellen, dass alle genannten vier Ressourcen stark und stabil sind, damit MySQL einwandfrei funktioniert. Organisationen entscheiden sich in der Regel für Server mit schnellen CPUs und Festplatten, die mehr Speichersteckplätze aufnehmen können.

Das Hinzufügen von Speicher ist eine kostengünstige und einfache Möglichkeit, die Leistung um Größenordnungen zu steigern, insbesondere bei festplattengebundenen Workloads. Dies mag unvernünftig erscheinen, aber viele Festplatten sind überlastet, da nicht genügend Arbeitsspeicher vorhanden ist, um den Arbeitsdatensatz des Servers zu speichern.

Überprüfen Sie bei der Fehlerbehebung sorgfältig die Leistung und Auslastung aller vier Ressourcen, um die Leistungsstatistiken der vier Ressourcen zu ermitteln. Die Überwachung ihrer Leistung ist wichtig, da sie dem Benutzer hilft zu wissen, was verbessert werden sollte oder ersetzt werden muss. Sie können diese Methode ausprobieren, da sie eine der schnellsten Methoden zur Lösung von Leistungsproblemen in MYSQL ist.

Schritt 4:Ergebnisse nach dem günstigsten zuerst filtern

Ein ausgezeichneter Weg zur Optimierung besteht darin, zuerst die billige, ungenaue Arbeit zu erledigen, dann die harte, präzise Arbeit an dem kleineren, was zu dem Datensatz führt.

Beispiel:

Angenommen, Sie suchen etwas innerhalb eines bestimmten Radius eines geografischen Punktes. Das erste Werkzeug in der Werkzeugkiste meines Programmierers ist die Haversine-Formel {Großkreis} zur Berechnung der Entfernung entlang der Oberfläche einer Kugel.

Das Problem bei der Technik besteht darin, dass die Formel viele trigonometrische Operationen erfordert, die sehr CPU-empfindlich sind. Infolgedessen laufen die Berechnungen tendenziell langsam ab und lassen die CPU-Auslastung der Maschine in die Höhe schnellen.

Bevor Sie die Formel verwenden, reduzieren Sie Ihre Aufzeichnungen auf eine kleine Teilmenge der Gesamtmenge und kürzen Sie die resultierende Menge auf einen präzisen Kreis. Ein Quadrat, das den Kreis enthält, ob genau oder ungenau, ist eine einfache Möglichkeit, dies zu tun. Dadurch wird sichergestellt, dass die Welt außerhalb des Quadrats nie von all diesen kostspieligen trigonometrischen Funktionen getroffen wird.

Schritt 5:Die beiden Todesfallen der Skalierbarkeit kennen und verstehen.

Die Skalierbarkeit ist möglicherweise nicht so vage, wie viele glauben. Stattdessen gibt es präzise mathematische Definitionen der Skalierbarkeit, ausgedrückt als Gleichungen, die hervorheben, warum Systeme nicht so gut skalieren, wie sie sollten.

Das universelle Skalierbarkeitsgesetz ist eine Definition, die praktisch ist, um die Skalierbarkeitseigenschaften von Systemen auszudrücken und zu quantifizieren. Es erklärt Skalierungsprobleme in Bezug auf Serialisierung und Übersprechen, die die beiden grundlegenden Kosten sind.

Parallele Prozesse, die gestoppt werden müssen, damit etwas Serialisiertes stattfinden kann, sind von Natur aus in ihrer Skalierbarkeit begrenzt. Wenn darüber hinaus parallele Prozesse miteinander kommunizieren müssen, um ihre Arbeit zu koordinieren, schränken sie sich gegenseitig ein. Daher sollten Serialisierung und Übersprechen vermieden werden, damit Ihre Anwendung schnell und effizient skaliert werden kann.

Schritt 6:Konzentrieren Sie sich nicht zu sehr auf die Konfiguration

Die Leute verbringen zu viel Zeit damit, Konfigurationen zu optimieren. Das Ergebnis ist normalerweise keine signifikante Verbesserung und kann manchmal sehr schädlich sein. Die Standardeinstellungen, die mit MySQL geliefert werden, sind einheitlich und stark veraltet, sodass Sie nichts konfigurieren müssen.

Daher ist es wichtig, die Grundlagen richtig zu machen und die Einstellungen nur bei Bedarf zu ändern. In zahlreichen Fällen werden Server-Tuning-Tools nicht empfohlen, da sie Benutzer mit widersprüchlichen Informationen irreführen könnten. Einige enthalten gefährliche, ungenaue Ratschläge wie Cache-Trefferquoten und Formeln für den Speicherverbrauch.

Schritt 7:Achten Sie auf Paginierungsabfragen

Anwendungen, die paginieren, bringen den Server normalerweise in die Knie. Optimierungen sind oft in der anderen Benutzeroberfläche selbst zu finden. Anstatt beispielsweise die genaue Anzahl der Seiten in den Ergebnissen und Links anzuzeigen, können Sie nur einen Link zu einer Seite anzeigen, die diese Informationen enthält. So können Sie verhindern, dass die Originalseite überladen wird.

Auf der Abfrageseite kann anstelle von Offset mit Limit eine weitere Zeile ausgewählt werden, und wenn Sie auf „nächste Seite“ klicken, können Sie diese letzte Zeile als Ausgangspunkt für die nächste Ergebnisgruppe festlegen.

Schritt 8:Speichern Sie die Statistiken eifrig, alarmieren Sie widerwillig

Alarmierung und Überwachung sind unerlässlich, aber was mit dem typischen Überwachungssystem passiert, ist, dass es anfängt, falsch positive Ergebnisse zu senden. Systemadministratoren richten E-Mail-Filterregeln ein, um das Rauschen zu stoppen, und bald wird Ihr Überwachungssystem nutzlos.

Es ist wichtig, alle möglichen Metriken zu erfassen und zu speichern, da Sie froh sein werden, sie zu haben, wenn Sie versuchen, herauszufinden, was sich im System geändert hat. Wenn ein seltsames Problem auftritt, können Sie außerdem auf ein Diagramm zeigen und eine Änderung der Serverauslastung leicht verfolgen.

Die Leute machen normalerweise auf Dinge wie die Puffertrefferquote oder die Anzahl der pro Sekunde erstellten temporären Tabellen aufmerksam. Das Problem ist, dass es keinen vernünftigen Schwellenwert für ein solches Verhältnis gibt. Darüber hinaus ist der geeignete Schwellenwert zwischen den Servern und von Zeit zu Zeit unterschiedlich, wenn sich Ihre Arbeit ändert.

Alarmieren Sie daher sparsam und nur unter Bedingungen, die auf ein eindeutiges, umsetzbares Problem hindeuten. Beispielsweise ist eine niedrige Puffertrefferquote nicht handlungsfähig und weist auch nicht auf ein echtes Problem hin, aber ein Server, der nicht auf einen Verbindungsversuch antwortet, ist ein tatsächliches Problem, das gelöst werden muss.

Schritt 9:Lerne die drei Indexierungsregeln

Dies ist das am häufigsten missverstandene Thema in Datenbanken, da es viele Möglichkeiten gibt, zu erfahren, wie Indizes funktionieren und wie der Server sie verwendet. Indizes dienen, wenn sie richtig entworfen sind, drei wichtigen Zwecken in einem Datenbankserver;

  1. Anstelle einzelner Zeilen lassen Indizes den Server Gruppen benachbarter Zeilen finden. Viele Leute denken, dass der Zweck von Indizes darin besteht, einzelne Zeilen zu finden, aber das Finden einzelner Zeilen führt zu zufälligen Festplattenoperationen, wodurch der Server sehr langsam wird. Gruppen von Zeilen zu finden ist viel besser und interessanter als Zeilen einzeln zu finden.
  2. Es lässt den Server auch das Sortieren vermeiden, indem er die Zeilen in der gewünschten Reihenfolge liest. Das Lesen von Zeilen ist im Gegensatz zum Sortieren viel schneller und kostengünstiger.
  3. Indexe ermöglichen es dem Server auch, ganze Abfragen allein aus dem Index zu beantworten, sodass überhaupt kein Zugriff auf das Tablet erforderlich ist. Dies wird auch als Covey-Index oder Nur-Index-Abfrage bezeichnet.

Schritt 10:Nutzen Sie das Fachwissen Ihrer Kollegen

Würde es Ihnen etwas ausmachen, es nicht alleine zu tun? Über Probleme zu rätseln und das zu tun, was Ihnen logisch und vernünftig erscheint, funktioniert vielleicht am meisten, aber nicht immer. Bauen Sie stattdessen ein Netzwerk von MySQL-bezogenen Ressourcen auf, die über Toolsets und Anleitungen zur Fehlerbehebung hinausgehen.

Die Leute sind unglaublich sachkundig und lauern in Mailinglisten, Foren und so weiter. Darüber hinaus bieten Konferenzen, Messen und Veranstaltungen lokaler Benutzergruppen wertvolle Möglichkeiten, um Einblicke zu erhalten und Beziehungen zu Kollegen aufzubauen, die Ihnen helfen können.

Für die wenigen, die nach Tools suchen, die diese Tipps ergänzen, können Sie sich den Percona-Konfigurationsassistenten für MySQL und die MySQL Percona-Überwachungs-Plug-ins ansehen.

Der Konfigurationsassistent kann Sie beim Generieren einer Baseline unterstützen. my.cnf-Datei für einen neuen Server, die den mit dem Server gelieferten Beispieldateien überlegen ist.

Der Abfrageberater, der den mit dem Server gelieferten Beispieldateien überlegen ist. Der Advisor analysiert Ihr SQL, um potenziell destruktive Muster wie Paginierungsabfragen zu erkennen (Tipp 7).

Percona-Überwachungs-Plugins sind Sätze von Überwachungs- und Grafik-Plugins, die Ihnen helfen, Statistiken eifrig zu speichern und widerwillig zu warnen (Schritt Nr. 8). Alle diese Tools sind frei verfügbar.

Vorteile der Leistungsoptimierung

Der Hauptvorteil besteht darin, dass Sie eine Überversorgung vermeiden und Kosten senken können, indem Sie Ihre Dienste richtig dimensionieren. Es gibt Ihnen auch Einblicke, ob das Verschieben von Datenspeicher oder das Hinzufügen von Serverkapazität die Leistung verbessert oder nicht, und wenn ja, wie viel es sein wird.

Sobald eine Datenbank richtig abgestimmt ist, liefert sie vorteilhafte Leistungsergebnisse mit großartigen Funktionalitäten. Es verringert nicht nur die unerwünschte Aufgabenlast, sondern optimiert auch die MySQL-Datenbank für einen schnelleren Datenabruf.

Andere Einstellungen können je nach Workload oder Hardware einen Unterschied machen. Das Ziel ist, Ihnen ein paar MySQL-Leistungsoptimierungen zu geben, um schnell eine vernünftige MySQL-Konfiguration zu erhalten, ohne zu viel Zeit damit zu verbringen, nicht grundlegende Einstellungen zu ändern oder die Dokumentation zu lesen, um zu verstehen, welche Einstellungen für Sie wichtig sind.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass die Leistungsoptimierung viele Vorteile bietet und beim Arbeiten mit großen Datenmengen empfohlen wird, um die Effizienz Ihres Servers zu verbessern. Wenn Sie die Tipps in diesem Artikel befolgen, können Sie die MySQL-Leistungsoptimierung auf Ihrem Server und Ihren Datenbanken bequem durchführen.