Requête MySQL trop lente : comment trouver d'où ça vient ?
7 réponses
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain Montfranc
Yliur a couché sur son écran :
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 ?
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 ?
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 ?
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 ?
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
Alain Montfranc a émis l'idée suivante :
Yliur a couché sur son écran :
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 ?
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 ?
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
Yliur
Le Thu, 29 Nov 2012 17:44:59 +0100 Alain Montfranc a écrit :
Alain Montfranc a émis l'idée suivante : > Yliur a couché sur son écran : >> 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 > > 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)
:) 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.
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
J'ai essayé ça, mais ça n'a rien changé.
Le Thu, 29 Nov 2012 17:44:59 +0100
Alain Montfranc <mort@aux.spammeurs> a écrit :
Alain Montfranc a émis l'idée suivante :
> Yliur a couché sur son écran :
>> 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
>
> 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)
:)
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.
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
Le Thu, 29 Nov 2012 17:44:59 +0100 Alain Montfranc a écrit :
Alain Montfranc a émis l'idée suivante : > Yliur a couché sur son écran : >> 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 > > 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)
:) 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.
Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
J'ai essayé ça, mais ça n'a rien changé.
Toxico Nimbus
Le 30/11/2012 08:16, Yliur a écrit :
Le Thu, 29 Nov 2012 17:44:59 +0100 Alain Montfranc a écrit :
Alain Montfranc a émis l'idée suivante :
Yliur a couché sur son écran :
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 ?
Le Thu, 29 Nov 2012 17:44:59 +0100
Alain Montfranc <mort@aux.spammeurs> a écrit :
Alain Montfranc a émis l'idée suivante :
Yliur a couché sur son écran :
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 ?
Le Thu, 29 Nov 2012 17:44:59 +0100 Alain Montfranc a écrit :
Alain Montfranc a émis l'idée suivante :
Yliur a couché sur son écran :
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 ?
Le Fri, 30 Nov 2012 08:52:44 +0100 Toxico Nimbus a écrit :
Le 30/11/2012 08:16, Yliur a écrit : > Le Thu, 29 Nov 2012 17:44:59 +0100 > Alain Montfranc a écrit : > >> Alain Montfranc a émis l'idée suivante : >>> Yliur a couché sur son écran : >>>> 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 >>> >>> 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) > > :) > 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. > > >> Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ? > > J'ai essayé ça, mais ça n'a rien changé. > peut être avec show profile <http://dev.mysql.com/doc/refman/5.0/en/show-profile.html>
Merci, même si ce n'est pas très détaillé ça m'a mis sur la voie :) . Ça devrait être bon maintenant.
Le Fri, 30 Nov 2012 08:52:44 +0100
Toxico Nimbus <toxn@free.fr> a écrit :
Le 30/11/2012 08:16, Yliur a écrit :
> Le Thu, 29 Nov 2012 17:44:59 +0100
> Alain Montfranc <mort@aux.spammeurs> a écrit :
>
>> Alain Montfranc a émis l'idée suivante :
>>> Yliur a couché sur son écran :
>>>> 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
>>>
>>> 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)
>
> :)
> 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.
>
>
>> Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ?
>
> J'ai essayé ça, mais ça n'a rien changé.
>
peut être avec show profile
<http://dev.mysql.com/doc/refman/5.0/en/show-profile.html>
Merci, même si ce n'est pas très détaillé ça m'a mis sur la voie :) .
Ça devrait être bon maintenant.
Le Fri, 30 Nov 2012 08:52:44 +0100 Toxico Nimbus a écrit :
Le 30/11/2012 08:16, Yliur a écrit : > Le Thu, 29 Nov 2012 17:44:59 +0100 > Alain Montfranc a écrit : > >> Alain Montfranc a émis l'idée suivante : >>> Yliur a couché sur son écran : >>>> 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 >>> >>> 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) > > :) > 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. > > >> Un "OPTIMIZE TABLE" sur les tables pour les defragmenter ? > > J'ai essayé ça, mais ça n'a rien changé. > peut être avec show profile <http://dev.mysql.com/doc/refman/5.0/en/show-profile.html>
Merci, même si ce n'est pas très détaillé ça m'a mis sur la voie :) . Ça devrait être bon maintenant.
Denis Beauregard
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur écrivait dans fr.comp.applications.sgbd:
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 ?
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
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur <yliur@free.fr> écrivait
dans fr.comp.applications.sgbd:
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 ?
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.
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur écrivait dans fr.comp.applications.sgbd:
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 ?
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
Yliur
Le Sun, 02 Dec 2012 13:19:38 -0500 Denis Beauregard a écrit :
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur écrivait dans fr.comp.applications.sgbd:
> >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 ?
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.
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.
Le Sun, 02 Dec 2012 13:19:38 -0500
Denis Beauregard <denis.b-at-francogene.com.invalid@nospam.com.invalid>
a écrit :
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur <yliur@free.fr> écrivait
dans fr.comp.applications.sgbd:
>
>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 ?
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.
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.
Le Sun, 02 Dec 2012 13:19:38 -0500 Denis Beauregard a écrit :
Le Thu, 29 Nov 2012 16:58:49 +0100, Yliur écrivait dans fr.comp.applications.sgbd:
> >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 ?
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.
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.