Kostenlose Lernempfehlung: MySQL-Video-Tutorial Multithreading kann Serverressourcen effektiv nutzen und die Parallelitätsleistung der Datenbank verbessern. In MySQL gehören zu den Hauptparametern, die gleichzeitige Verbindungen und Threads steuern, max_connections, back_log, thread_cache_size und table_open_cahce.
1. max_connectionsVerwenden Sie max_connections, um die maximal zulässige Anzahl von Verbindungen zur MySQL-Datenbank zu steuern. Der Standardwert ist 151. Wenn die Statusvariable „connection_errors_max_connections“ nicht Null ist und weiter wächst, bedeutet dies, dass Verbindungsanfragen weiterhin fehlschlagen, weil die Anzahl der Datenbankverbindungen den maximal zulässigen Wert erreicht hat. Aus diesem Grund können Sie eine Erhöhung des Werts von „max_connections“ in Betracht ziehen. Hinweis: Wenn die Anzahl der gleichzeitigen Verbindungsanfragen 151 überschreitet, sind keine Verbindungen verfügbar, um die Anfragen des Clients zu bearbeiten. Diese nachfolgenden Verbindungen befinden sich im Wartezustand. Warten Sie, bis die MySQL-Verbindung freigegeben ist. Wenn keine inaktive Verbindung vorhanden ist, tritt bei der Anforderung eine Zeitüberschreitung auf.
Mysql Die maximale Anzahl unterstützter Verbindungen hängt von vielen Faktoren ab, einschließlich der Qualität der Thread-Bibliothek der jeweiligen Betriebssystemplattform. Speichergröße und jede Verbindungslast, CPU-Verarbeitungsgeschwindigkeit, erwartete Antwortzeit usw. Unter der Linux-Plattform ist es für einen Server mit guter Leistung nicht schwierig, 500-1000 Verbindungen zu unterstützen. Dies muss anhand der Serverleistung bewertet und eingestellt werden.
2. back_log
Der back_log-Parameter steuert die Backlog-Anforderungsstapelgröße, die festgelegt wird, wenn MySQL auf den TCP-Port lauscht. Wenn die Anzahl der MySql-Verbindungen max_connections erreicht, werden neue Anforderungen im Stapel gespeichert, um auf eine bestimmte Verbindung zu warten, um Ressourcen freizugeben. Die Anzahl der wartenden Verbindungen ist back_log, es werden keine Verbindungsressourcen gewährt . Es wird ein Fehler gemeldet
. Der Standardwert vor Version 5.6.6 beträgt 50, und der Standardwert für nachfolgende Versionen beträgt 50 + (max_connections / 5), der Höchstwert überschreitet jedoch 900 nicht. Hinweis: Wenn die Anzahl der gleichzeitig vom Client gesendeten Anforderungen mehr als 151 beträgt, befinden sich nachfolgende Anforderungen im Wartezustand. Dann kann die Anzahl der wartenden Verbindungen back_log erreichen. Diese neuen Anfragen werden im Stapel gespeichert. darauf warten, dass eine Verbindung freigegeben wird. Die Anzahl der Stapel wird über back_log festgelegt. Wenn die Datenbank eine große Anzahl von Verbindungsanfragen in kurzer Zeit verarbeiten muss, können Sie erwägen, den Wert von back_log entsprechend zu erhöhen.
3. table_open_cache
Dieser Parameter wird verwendet, um die Anzahl der Tabellencaches zu steuern, die von allen SQL-Anweisungsausführungsthreads geöffnet werden können. Bei der Ausführung von SQL-Anweisungen muss jeder SQL-Ausführungsthread mindestens 1 Tabellencache öffnen. Der Wert dieses Parameters sollte entsprechend der festgelegten maximalen Anzahl von Verbindungen max_connections und der maximalen Anzahl von Tabellen festgelegt werden, die an der Ausführung zugehöriger Abfragen für jede Verbindung beteiligt sind :
max_connections x N; Hinweis: Dies ist nicht spezifisch für a session , dies gilt für alle Client-Ausführungsthreads. Die Anzahl der Tabellencaches ist die Anzahl der Tabellen, die in jeder SQL-Anweisung bearbeitet werden. Beispielsweise betreibt eine SQL-Anweisung im Allgemeinen mindestens eine Tabelle. Wenn Sie eine Tabelle betreiben, gibt es einen Tabellencache. Wenn Sie mehrere Tabellen betreiben, gibt es mehrere Tabellencaches.
mysql> show variables like 'table_open_cache%';+----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| table_open_cache | 431 || table_open_cache_instances | 16 |+----------------------------+-------+2 rows in set (0.06 sec)
4, thread_cache_size
Um die Verbindung zur Datenbank zu beschleunigen, speichert MySQL eine bestimmte Anzahl von Kundenservice-Threads zur Wiederverwendung zwischen. Der Parameter thread_cache_size kann verwendet werden, um die Anzahl der MySQL-Cache-Kundenservices zu steuern Threads. Hinweis: Dies entspricht dem Öffnen eines Thread-Pools auf dem MySQL-Server. Wenn der Client dies anfordert, nehmen wir einen Thread aus dem Thread-Pool heraus, um die Aufgabenverarbeitung durchzuführen.
mysql> show variables like 'thread_cache_size%';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| thread_cache_size | 8 |+-------------------+-------+1 row in set (0.00 sec)
Es werden insgesamt 8 Thread-Informationen zwischengespeichert.
5. innodb_lock_wait_timeout
Dieser Parameter wird verwendet, um die Zeit festzulegen, die InnoDB-Transaktionen auf Zeilensperren warten sollen. Der Standardwert beträgt 50 ms und kann nach Bedarf dynamisch festgelegt werden. Bei Geschäftssystemen, die eine schnelle Rückmeldung erfordern, kann die Wartezeit für Zeilensperren kleiner eingestellt werden, um eine langfristige Aussetzung von Transaktionen zu vermeiden. Bei im Hintergrund ausgeführten Stapelverarbeitungsprogrammen kann die Wartezeit für Zeilensperren länger angepasst werden, um eine große Verzögerung zu vermeiden Es ist ein Rollback-Vorgang aufgetreten.
Hinweis: Wenn in einem relativ schnell reagierenden Geschäftssystem die Zeilensperre nicht erhalten wird, melden Sie einfach direkt einen Fehler, und Sie müssen nicht lange auf die Antwort der Transaktion warten. Sie können sehen, dass das Standard-Timeout 50 ms beträgt
mysql> show variables like 'innodb_lock_wait_timeout%';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50 |+--------------------------+-------+1 row in set (0.01 sec)
| --+|. innodb_lock_wait_timeout |. 50 |+------------------------+------+1 Zeile im Satz (0,01 Sek.)
MySQL-Tutorial
(Video)
Das obige ist der detaillierte Inhalt vonWerfen Sie einen Blick auf die Optimierung der MySQL-Parallelitätsparameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!