Forking processus multiples en php (superviseur). Chacun crée une connexion à la même base de données Mysql et exécute la même requête SELECT en parallèle (Gearman). Si j'augmente la quantité de processus (c'est-à-dire les mêmes connexions de temps) et que plus de requêtes identiques s'exécuteront en parallèle, cela augmentera le temps d'envoi des données dans SHOW PROCESSLIST dans chaque processus. C'est une sélection simple avec le niveau de transaction READ UNCOMMITED. Est-ce un problème de configuration mysql? Ou la requête SELECT a provoqué des verrous de tables? Ou peut-être un scan complet?Augmenter les connexions à mysql provoquer l'augmentation des temps d'envoi de données dans chacun sur la même requête
Serveur: Ubuntu 16.04.2 LTS. 1 noyau de CPU. MySQL 5.7.17. innodb_buffer_pool_size 12 GB
Peut-être sur la latence réseau, la structure de table, les index et l'efficacité des requêtes. Donc, vous devriez donner plus de détails sur votre schéma et votre requête. – abeyaz
Il utilise 32 tables incluant des auto-jointures (13 tables uniques) s'exécutant en 3 secondes dans une connexion, mais dans deux parallèles cela prendra 6 secondes dans chaque processus et ainsi de suite, comme leur exécution dans la file d'attente. Les requêtes sont assez grandes avec de nombreuses jointures, mais sans agrégation ni tri. une seule table scanne 4262 lignes avec using_where et 45% filtre, l'autre utilise l'index –
On dirait que vous verrouillez la table dans chaque requête. Utilisez-vous BEGIN TRANSACTION? – abeyaz