Heim  >  Artikel  >  Datenbank  >  Fünf Möglichkeiten zur Optimierung der MySQL-Leistung

Fünf Möglichkeiten zur Optimierung der MySQL-Leistung

迷茫
迷茫Original
2017-01-17 10:10:461512Durchsuche

(1) Verbindung

Verbindungen kommen normalerweise vom Webserver. Nachfolgend sind einige Parameter im Zusammenhang mit der Verbindung und deren Einstellung aufgeführt.

1. max_connections

Dies ist die maximale Anzahl von Verbindungen, die der Webserver zulässt. Denken Sie daran, dass jede Verbindung Sitzungsspeicher verwendet (Sitzungsspeicher wird später in diesem Artikel behandelt).

2. max_packet_allowed

Die maximale Paketgröße entspricht normalerweise der Größe des größten Datensatzes, den Sie in einem großen Block zurückgeben müssen größer sein.

3. aborted_connects

Überprüfen Sie den Systemstatuszähler, um sicherzustellen, dass er nicht gestiegen ist. Wenn die Zahl zunimmt, bedeutet dies, dass der Client beim Herstellen einer Verbindung einen Fehler festgestellt hat.

4. thread_cache_size

Eingehende Verbindungen erstellen in MySQL einen neuen Thread, da das Öffnen und Schließen von Verbindungen nicht wie bei anderen Datenbanken ist wie Oracle, aber das Vorab-Erstellen von Threads spart keine Zeit, weshalb MySQL-Thread-Cache benötigt wird.

Wenn es wächst, achten Sie bitte genau auf die erstellten Threads und vergrößern Sie Ihren Thread-Cache. Bei thread_cache_size von 2550 oder 100 ist die Speichernutzung nicht groß.

(2) Abfrage-Cache

Die zwischengespeicherte Abfrage in MySQL umfasst zwei Parsing-Abfragepläne und den zurückgegebenen Datensatz Elemente im Abfragecache ungültig machen.

1. query_cache_min_res_unit

Die Blöcke im Abfragecache von query_cache_min_res_unit im MySQL-Parameter werden basierend auf dieser Größe zugewiesen. Verwenden Sie die folgende Formel, um die durchschnittliche Größe des Abfragecaches zu berechnen und diese festzulegen Variable entsprechend dem Berechnungsergebnis. MySQL nutzt den Abfragecache effizienter, speichert mehr Abfragen zwischen und reduziert die Speicherverschwendung.

2. query_cache_size

Dieser Parameter legt die Gesamtgröße des Abfragecaches fest.

3. query_cache_limit

Dieser Parameter weist MySQL an, größere Abfragen als diese Größe zu verwerfen. Im Allgemeinen sind große Abfragen relativ selten, z diese großen Ergebnisse Der Satz sollte den Abfragecache nicht füllen.

qcache-Trefferverhältnis = qcache_hits / (qcache_hits + com_select)

Verwenden Sie

SQL> show status wie „qcache%“;

show status like 'com_%';

Suchen Sie diese Variablen.

durchschnittliche Abfragegröße = (query_cache_size - qcache_free_memory)/qcache_queries_in_cache

Verwenden Sie

SQL> zeigen Sie Variablen wie „query%“ an;

qcache_*-Statusvariablen Sie können Folgendes erhalten:

SQL> Status wie „qcache%“ anzeigen;

Den Wert von query_cache_size abrufen.

(3) Temporäre Tabelle

Die Speichergeschwindigkeit ist recht hoch, daher hoffen wir, dass alle Sortiervorgänge im Speicher ausgeführt werden. Wir können die Abfrage anpassen Ergebnisse: Stellen Sie einen kleineren Wert ein, um eine Speichersortierung zu erreichen, oder stellen Sie die Variable größer ein.

tmp_table_size

max_heap_table_size

Immer wenn Sie eine temporäre Tabelle in MySQL erstellen, wird der Mindestwert dieser beiden Variablen als kritischer Wert verwendet, außer beim Erstellen der temporären Tabelle auf der Festplatte Zusätzlich zur Tabelle werden viele Sitzungen erstellt, und diese Sitzungen beanspruchen begrenzte Ressourcen. Daher ist es besser, die Abfrage anzupassen, als diese Parameter höher zu setzen. Gleichzeitig ist zu beachten, dass Tabellen mit BLOB oder TEXT Feldtypen werden direkt auf die Festplatte geschrieben. Eine ausführliche Erklärung der bidirektionalen Replikationstechnologie von MySQL

(4) Sitzungsspeicher

Jede Sitzung in MySQL verfügt über einen eigenen Speicher, dem der Speicher zugewiesen ist SQL-Abfragen möchten Sie also so groß wie nötig machen. Sie müssen jedoch die Anzahl der konsistenten Sitzungen in der Datenbank gleichzeitig ausgleichen. Was hier ein bisschen schwarz ist, ist, dass MySQL Caches nach Bedarf zuweist, Sie können sie also nicht einfach hinzufügen und mit der Anzahl der Sitzungen multiplizieren, was zu einer viel größeren Schätzung als der typischen MySQL-Nutzung führen würde. Die beste Vorgehensweise besteht darin, MySQL zu starten, alle Sitzungen zu verbinden und sich dann weiterhin auf die VIRT-Spalte der obersten Sitzung zu konzentrieren. Dies ist die tatsächliche Gesamtspeichernutzung Sie erhalten den tatsächlichen Speicher aller Sitzungen und dividieren ihn dann durch die Anzahl der Sitzungen, um den Durchschnitt zu erhalten.

1. read_buffer_size

Cache kontinuierlich gescannte Blöcke. Dieser Cache gilt für alle Speicher-Engines, nicht nur für MyISAM-Tabellen.

2. sort_buffer_size

Die Größe des Sortierpuffers. Stellen Sie ihn am besten auf 1M-2M ein und legen Sie ihn dann in der Sitzung fest, um einen höheren Wert für eine bestimmte Abfrage festzulegen.

3. join_buffer_size

Die Größe des für die Ausführung der gemeinsamen Abfrage zugewiesenen Puffers, legen Sie ihn auf eine Größe von 1M-2M fest und legen Sie ihn dann in jeder Sitzung individuell fest.

4. read_rnd_buffer_size

wird zum Sortieren und Sortieren nach Operationen verwendet. Es ist am besten, es auf 1M zu setzen und es dann als Sitzungsvariable auf einen größeren Wert in der Sitzung zu setzen.

(5) Langsames Abfrageprotokoll

Das langsame Abfrageprotokoll ist eine sehr nützliche Funktion von MySQL.

1. log_slow_queries

Setzen Sie den Parameter log_slow_queries im MySQL-Parameter in der Datei my.cnf und setzen Sie ihn auf on. Standardmäßig legt MySQL die Datei im Datenverzeichnis ab und die Datei wird in der Form „hostname-slow“ benannt .log". Sie können beim Setzen dieser Option aber auch einen Namen dafür angeben.

2. long_query_time

Der Standardwert beträgt 10 Sekunden, Sie können ihn dynamisch festlegen, der Wert reicht von 1 bis „Ein“. Wenn die Datenbank gestartet wird, wird das Protokoll aktiviert standardmäßig deaktiviert. Ab 5.1.21 und den von Google gepatchten Versionen kann diese Option in Mikrosekunden eingestellt werden. Dies ist eine erstaunliche Funktion, denn sobald Sie alle Abfragen eliminiert haben, die länger als 1 Sekunde dauern, ist die Anpassung sehr erfolgreich und kann Ihnen dabei helfen, problematisches SQL zuvor zu eliminieren es wird zu einem großen Problem.

3. log_queries_not_using_indexes

Es ist eine gute Idee, diese Option zu aktivieren, da sie tatsächlich Abfragen protokolliert, die alle Zeilen zurückgeben.

Zusammenfassung

Wir haben die fünf Hauptkategorien der MySQL-Parametereinstellungen eingeführt. Diese Parameter sind bei der Optimierung der Datenbankleistung und Fehlerdiagnose normalerweise immer noch sehr nützlich.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn