Die MySQL-Leistungsoptimierung umfasst viele Aspekte. In diesem Artikel werden einige Schlüsselparameter in MySQL erläutert. Diese Parameter sind gewissermaßen die Schlüsselparameter, die die Leistung der MySQL-Datenbank bestimmen. Bei der Datenbankverwaltung und -entwicklung, bei der es um die Optimierung der MySQL-Leistung geht, stoßen wir häufig auf Leistungsprobleme. Durch die Suche nach Informationen im Internet und die eigenen Versuche des Autors halte ich die folgenden Systemparameter für kritischer:
Schlüsselparameter eins: back_log
Die Anzahl der Verbindungen, die MySQL haben muss. Dies funktioniert, wenn der Haupt-MySQL-Thread in kurzer Zeit viele Verbindungsanfragen erhält und der Haupt-Thread dann einige Zeit (wenn auch nur kurz) benötigt, um nach Verbindungen zu suchen und einen neuen Thread zu starten.
Der back_log-Wert gibt an, wie viele Anfragen in kurzer Zeit im Stack gespeichert werden können, bevor MySQL vorübergehend keine neuen Anfragen mehr beantwortet. Nur wenn Sie viele Verbindungen in kurzer Zeit erwarten, müssen Sie ihn erhöhen, d. h. dieser Wert ist die Größe der Abhörwarteschlange für eingehende TCP/IP-Verbindungen. Ihr Betriebssystem hat seine eigene Grenze für diese Warteschlangengröße. Der Versuch, back_log auf einen höheren Wert als den Grenzwert Ihres Betriebssystems festzulegen, hat keine Auswirkung.
Wenn Sie Ihre Host-Prozessliste beobachten und eine große Anzahl von nicht authentifizierten Benutzern | Der Standardwert ist 50, ich habe ihn auf 500 geändert.
Schlüsselparameter zwei: Interactive_timeout
Die Anzahl der Sekunden, die der Server auf eine Aktion bei einer interaktiven Verbindung wartet, bevor er diese schließt. Ein interaktiver Client wird als Client definiert, der die Option CLIENT_INTERACTIVE für mysql_real_connect() verwendet. Der Standardwert ist 28800, ich habe ihn auf 7200 geändert.
Schlüsselparameter drei: key_buffer_size
Indexblöcke werden gepuffert und von allen Threads gemeinsam genutzt. key_buffer_size ist die Puffergröße, die für Indexblöcke verwendet wird. Erhöhen Sie sie, um eine bessere Handhabung des Index zu erreichen (für alle Lese- und Mehrfachschreibvorgänge), und zwar so weit, wie Sie sich leisten können. Wenn Sie es zu groß machen, beginnt das System mit dem Paging und wird wirklich langsamer. Der Standardwert ist 8388600 (8 MB) und mein MySQL-Host verfügt über 2 GB Speicher, daher habe ich ihn in 402649088 (400 MB) geändert.
Schlüsselparameter vier: max_connections
Die Anzahl gleichzeitig zulässiger Clients. Durch Erhöhen dieses Werts erhöht sich die Anzahl der von mysqld benötigten Dateideskriptoren. Diese Zahl sollte erhöht werden, da andernfalls häufig der Fehler „Zu viele Verbindungen“ auftritt. Der Standardwert ist 100, ich habe ihn auf 1024 geändert.
Schlüsselparameter fünf: record_buffer
Jeder Thread, der einen sequentiellen Scan durchführt, weist jeder gescannten Tabelle einen Puffer dieser Größe zu. Wenn Sie viele aufeinanderfolgende Scans durchführen, möchten Sie diesen Wert möglicherweise erhöhen. Der Standardwert ist 131072 (128K), ich habe ihn in 16773120 (16M) geändert.
Schlüsselparameter sechs: sort_buffer
Jedem Thread, der sortiert werden muss, wird ein Puffer dieser Größe zugewiesen. Durch Erhöhen dieses Werts werden ORDER BY- oder GROUP BY-Vorgänge beschleunigt. Der Standardwert ist 2097144 (2M), ich habe ihn in 16777208 (16M) geändert.
Schlüsselparameter sieben: table_cache
Die Anzahl der für alle Threads geöffneten Tabellen. Durch Erhöhen dieses Werts erhöht sich die Anzahl der von mysqld benötigten Dateideskriptoren. MySQL benötigt zwei Dateideskriptoren für jede eindeutige geöffnete Tabelle. Der Standardwert ist 64, ich habe ihn auf 512 geändert.
Schlüsselparameter acht: thread_cache_size
Die Anzahl der darin gespeicherten Threads kann wiederverwendet werden. Wenn dies der Fall ist, wird der neue Thread aus dem Cache abgerufen. Wenn beim Trennen der Verbindung noch Platz vorhanden ist, wird der Thread des Clients im Cache abgelegt. Wenn viele neue Threads vorhanden sind, kann dieser Variablenwert zur Verbesserung der Leistung verwendet werden. Durch den Vergleich der Variablen in den Zuständen „Verbindungen“ und „Threads_created“ können Sie die Rolle dieser Variablen erkennen. Ich habe es auf 80 eingestellt.
Schlüsselparameter neun: wait_timeout
Die Anzahl der Sekunden, die der Server auf eine Aktion für eine Verbindung wartet, bevor er diese schließt. Der Standardwert ist 28800, ich habe ihn auf 7200 geändert.
Hinweis: Die Parameteranpassung kann durch Ändern der Datei /etc/my.cnf und Neustarten von MySQL erreicht werden. Dies ist eine relativ vorsichtige Aufgabe, und die oben genannten Ergebnisse sind nur einige meiner Meinungen. Sie können sie entsprechend den Hardwarebedingungen Ihres eigenen Hosts (insbesondere der Speichergröße) weiter modifizieren.