Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MySQL] MyIsam --> InnoDB : temps de réponse x30

1 réponse
Avatar
ManuPavy
Bonjour,
J'ai migré l'ensemble de ma base de données MySQL du format MyIsam à
InnoDB, afin de bénéficier des contraintes d'intégrité qui n'étaient pas
à l'ordre du jour précédemment, mais l'est devenu.
Je constate un ralentissement notable concernant (au moins) une requete :
6 tables jointes groupées union 3 tables jointes groupées, le tout trié
sur un champ "commun".
Je passe de 3s à 100s. J'ai mis à jour les indexes, fait des optimize,
check, ... par contre pas de redémarrage de la base (est ce nécessaire ?)
le explain dit :
+--------+--------+
| table | type |
+--------+--------+
| C1 | index |
| CD1 | index |
| D1 | index |
| Dt2 | ref |
| Dt1 | ref |
| UR1 | ref |
| UR2 | eq_ref |
| UT1 | ref |
| UT2 | ref |
+--------+--------+

Avec un produit des "rows" parcourues : 1*1*1*1*105*105*58*67*8 = 342745200

Les tables (comme vu ci dessus) ne contiennent pas un nombre
d'enregistrements important.

Le reste de mes requetes passe bien, aucun ralentissement dimensionnant
par rapport à l'appli.

Est ce normal ? où dois/puis-je agir ?

Merci de vos expériences et éventuelles solutions.

Manu

1 réponse

Avatar
Trognon Patrice
ManuPavy wrote:

Bonjour,
J'ai migré l'ensemble de ma base de données MySQL du format MyIsam à
InnoDB, afin de bénéficier des contraintes d'intégrité qui n'étaient pas
à l'ordre du jour précédemment, mais l'est devenu.
Je constate un ralentissement notable concernant (au moins) une requete :
6 tables jointes groupées union 3 tables jointes groupées, le tout trié
sur un champ "commun".
Je passe de 3s à 100s. J'ai mis à jour les indexes, fait des optimize,
check, ... par contre pas de redémarrage de la base (est ce nécessaire ?)
le explain dit :
+--------+--------+
| table | type |
+--------+--------+
| C1 | index |
| CD1 | index |
| D1 | index |
| Dt2 | ref |
| Dt1 | ref |
| UR1 | ref |
| UR2 | eq_ref |
| UT1 | ref |
| UT2 | ref |
+--------+--------+

Avec un produit des "rows" parcourues : 1*1*1*1*105*105*58*67*8 > 342745200

Les tables (comme vu ci dessus) ne contiennent pas un nombre
d'enregistrements important.

Le reste de mes requetes passe bien, aucun ralentissement dimensionnant
par rapport à l'appli.

Est ce normal ? où dois/puis-je agir ?

Merci de vos expériences et éventuelles solutions.

Manu




héhé, sans InnoDB MySQL est un SGBD d'il y a 20 ans.
Avec c'est un SGBD d'il y a 15 ans.

Si tu veux des perfs PLUS les vrais fonctionnalités d'un SGBD
prends autre chose ;)

Postgres est plutot pas mal.

--
Cordialement,

Patrice Trognon
http://www.javadevel.com