MySQL verwendet nicht mehrere CPUs

MySQL verwendet nicht mehrere CPUs

Unser MySQL-Server hat in letzter Zeit viel CPU-Auslastung (er hat mehrmals 100 % erreicht und bleibt eine Zeit lang dort) und mir ist aufgefallen, dass die CPU-Last vollständig auf einem Kern einer CPU liegt. Ich hatte gehofft, das auf alle 4 auf meinem Server zu verteilen.

Ich habe die MySQL-Einstellungen optimiert, um mehr RAM und weniger CPU zu verwenden, aber gelegentlich kommt es trotzdem noch zu einer sehr hohen CPU-Auslastung.

Es scheint, als ob sich alles in diesem Thema auf thread_concurrency bezieht (was, wie ich gelesen habe, eine nur unter Solaris verfügbare Einstellung ist). Was kann ich unter Linux tun?

Danke.

Antwort1

Sie haben Recht, thread_concurrency ist nur für Solaris und wird ab MySQL 5.6 nicht mehr unterstützt. Ich glaube nicht, dass Sie mehrere Kerne/CPUs mit MyISAM verwenden können. Um die Hardware voll auszunutzen, verwenden Sie InnoDB.

Daskönnte Ihnen helfen, die Dinge besser zu verstehen.

Antwort2

Der richtige Wert für diese Variable hängt von der Umgebung und der Arbeitslast ab. Sie müssen verschiedene Werte ausprobieren, um herauszufinden, welcher Wert für Ihre Anwendungen geeignet ist. Ein empfohlener Wert ist das Doppelte der Anzahl der CPUs plus der Anzahl der Festplatten.

Der Bereich dieser Variable reicht von 0 bis 1000. Vor MySQL 5.0.19 wird ein Wert von 20 oder höher als unendliche Parallelität interpretiert. Ab 5.0.19 können Sie die Thread-Parallelitätsprüfung deaktivieren, indem Sie den Wert auf 0 setzen. Durch die Deaktivierung der Thread-Parallelitätsprüfung kann InnoDB so viele Threads erstellen, wie es benötigt.

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency

Antwort3

Um es einfach zu halten: Jede in MySQL ausgeführte Abfrage verwendet nur 1 CPU-Kern, unabhängig davon, wie viele Multi-Cores die InnoDB-Engine hat.

Alle Multi-Core-Optimierungen in MySQL sind hilfreich, wenn viele verschiedene Abfragen gleichzeitig ausgeführt werden und CPU und Daten stark beanspruchen. Wenn Sie jedoch eine große Abfrage haben, deren Ausführung Minuten oder Stunden dauert, wird immer nur ein CPU-Kern verwendet. (Und wenn Sie solche Abfragen ausführen müssen, sollten Sie Server mit höherer CPU-Geschwindigkeit und weniger Kernen kaufen.)

verwandte Informationen