web-dev-qa-db-fra.com

Le serveur MySQL n'utilise que 1 cœur sur 48 avec les requêtes GROUP BY.

J'ai 48 serveurs haut de gamme avec la dernière version de MySQL 5.7 installée

Je suis un peu surpris que lors de l'exécution de requêtes avec GROUP BY, peu importe la façon dont je formate ma requête, je ne reçois qu'un seul cœur de processeur utilisé pour cette requête, clairement illustré par la sortie htop

Bien sûr, je peux exécuter plusieurs requêtes en même temps, et c’est ainsi que je peux utiliser tous les cœurs, mais cela ne semble pas très pratique et toutes les requêtes ne peuvent pas être fractionnées pour utiliser toute la puissance du serveur

Existe-t-il des extensions MySQL ou des astuces SQL permettant d'utiliser plusieurs cœurs lors du traitement de données avec GROUP BY?

5
Matthias

Comme la réponse acceptée par RolandoMySQLDBA à Possible de faire en sorte que MySQL utilise plus d’un cœur? question dit:

En fait, j'ai discuté de innodb_thread_concurrency avec un expert MySQL à l'adresse la conférence Percona Live NYC en mai 2011.

J'ai appris quelque chose d'étonnant: malgré la documentation, c'est Il est préférable de laisser innodb_thread_concurrency à 0 (simultanéité infinie) . De cette façon, InnoDB décide du meilleur nombre de innodb_concurrecy_tickets ouvrir pour une configuration d'instance MySQL donnée.

Une fois que vous avez défini innodb_thread_concurrency sur 0, vous pouvez définir innodb_read_io_threads et innodb_write_io_threads (les deux depuis MySQL 5.1.38) à la valeur maximale de 64. Cela devrait engager plus de cœurs.

C’est le meilleur conseil que j’ai jamais trouvé sur la façon de faire en sorte que MySQL utilise davantage de cœurs en général.

6
Shadow

Outre les threads d'arrière-plan, une connexion utilisera un seul cœur de processeur. Le s'applique à GROUP BY, UNION, PARTITION` et à tout ce que vous pourriez penser qu'il devrait être capable de faire en parallèle.

L'instruction s'applique à InnoDB au moins via MySQL 8.0 et MariaDB 10.2.

Un logiciel tiers peut utiliser plusieurs cœurs: https://www.percona.com/blog/2014/05/01/parallel-query-mysql-shard-query/ .

De plus, le "magasin de colonnes" dans MariaDB 10.2 utilise probablement plusieurs cœurs.

1
Rick James