Bonjour,
j'aimerais savoir quelles sont les performances d'une procédure stockée. J'ai un collègue qui me dit que les procédures stockées doivent être re-compilées à chaque appel et que donc ça nuit aux performances. Est-ce vrai ?
Bonjour,
j'aimerais savoir quelles sont les performances d'une procédure stockée. J'ai un collègue qui me dit que les procédures stockées doivent être re-compilées à chaque appel et que donc ça nuit aux performances. Est-ce vrai ?
salut,
pour mysql c'est pas très bien documenté, je t'avoue...
en pratique le create procedure/function stocke le code dans une table de information_schema qui s'appelle routines...
il est for probable qu'une version compilé soit stocké sous forme binaire ou de pseudo code compilé (style java) puisque le create génère une compilation...
Dans l'absolu, l'appel à call limité la bande passante utilisée pour exécuter l'ensemble des actions voulues... donc au niveau des appels tu y gagnes forcément...
En gros, le gain en performance dépend aussi du paramétrage de ton serveur... si tu as un mutu avec peu de mémoire pour mysql alors tu peux en souffrir mais ce serait pareil en fait avec des allers et retours entre application et bd (voir pire)
Personnellement, à architecture égale, en comparant la version aller/retours classiques et la génération intégrale de xhtml coté mysql je gagne entre 30 et 50%... selon les page en pure procédures stockées...
La seule vrai limite c'est les 255 niveaux de récursion et que certains traitement sont pas faisable de manière du tout ou efficacement avec mysql (genre les remplacement à base de regex ^^ )...
Là où il a plus raison c'est sur les fonctions stockées, car selon leur placement dans une requêtes, elles peuvent engendrer des pertes drastiques de performances... tu pourras jamais reproduire l'équivalent d'un code compilé style c/c++
Au final, c'est donc plus l'utilisation qui, si elle est pas adaptée à ton système et à ce que sait bien faire mysql, va être à l'origine de perte de performances...
Partager