Requête MySQL trop lente : comment trouver d'où ça vient ?
Le
Yliur

Bonjour
J'ai une requête SQL très lente sur une machine et j'aimerais savoir
pourquoi. Cette requête s'exécute beaucoup plus rapidement (7-8
secondes au lieu d'1-2 minutes) sur une autre machine qui devrait être
sensiblement équivalente.
La requête est un peu compliquée, je ne la jette pas comme ça tout de
suite (même si ça viendra peut-être). Par contre comment savoir ce qui
prend du temps à MySQL ? J'ai utilisé EXPLAIN pour avoir un plan
d'exécution et sur les deux machines : le plan est le même. Y a-t-il
moyen d'avoir plus d'informations sur le temps consommé par chacune des
opérations du plan par exemple ?
Merci
Yliur
J'ai une requête SQL très lente sur une machine et j'aimerais savoir
pourquoi. Cette requête s'exécute beaucoup plus rapidement (7-8
secondes au lieu d'1-2 minutes) sur une autre machine qui devrait être
sensiblement équivalente.
La requête est un peu compliquée, je ne la jette pas comme ça tout de
suite (même si ça viendra peut-être). Par contre comment savoir ce qui
prend du temps à MySQL ? J'ai utilisé EXPLAIN pour avoir un plan
d'exécution et sur les deux machines : le plan est le même. Y a-t-il
moyen d'avoir plus d'informations sur le temps consommé par chacune des
opérations du plan par exemple ?
Merci
Yliur
Taper explain <requete>; peut donner des pistes
ex:
explain select toto from tutu where id = 123;
http://dev.mysql.com/doc/refman/5.0/fr/explain.html
Pardon pas lu jusqu'au bout (fatigue toussa)
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
Alain Montfranc
:)
Je me demandais s'il y avait moyen d'avoir des informations sur le
temps consacré à chaque opération, pendant une exécution réelle de la
requête.
J'ai essayé ça, mais ça n'a rien changé.
peut être avec show profile
Toxico Nimbus
Merci, même si ce n'est pas très détaillé ça m'a mis sur la voie :) .
Ça devrait être bon maintenant.
Une possibilité : les tableaux sont indexés sur une des machines et
pas sur l'autre. Un tableau indexé est lu plus rapidement.
Une machine avec un seul usager et beaucoup de mémoire par rapport à
une machine partagée et peu de mémoire vive, donc on utilise le disque
plus souvent.
Denis
Denis Beauregard a écrit :
Pour la différence entre les deux : j'ai vérifié les index et
l'utilisation des index a l'air d'être la même dans les deux plans
d'exécution. Pour les questions de mémoire, et d'utilisation, ça
devrait être large sur la machine la plus lente (la machine de
production). Peut-être un problème de configuration, ...
Ce n'est pas très grave, je me disais simplement que ça m'aiderait à
trouver l'origine du problème. Je suis sur une piste pour résoudre le
problème de manière beaucoup plus radicale, sur les deux machines.
Merci.