867 vues 0 commentaires

Requête SQL trop lente

par le23 janvier 2009
 

Voilà une des solutions mises en place pour améliorer le fonctionnement d’un site suite à de nombreuses requêtes SQL qui ralentissait énormément la base de donnée. En moyenne, l’exécution de chaque requête prenait entre 1 et 5 minutes de calcul au serveur, puisque celles ci utilisaient notamment une fonction MATCH … AGAINST plutôt réputée pour sa gourmandise.

La fonction like est par ailleurs un peu moins gourmande puisque l’encadrement des expressions recherchées peut être un peu plus précis avec des enchainements de OR champ1 Like ‘%…%’ OR champ1 like ‘%…%’ .

mysql

La question a donc été de résoudre ce problème de lenteur SQL :

Cette requête nécessite t-elle d’être relancée fréquemment car les updates sur la ou les tables en relation sont nombreux ? à cette question, la réponse fut non pas forcément.

L’utilisation d’une table intermédiaire recevant les résultats des requêtes est une excellente solution pour parer aux problèmes de lenteurs des requêtes avec une définition d’expiration pour les enregistrements. La première génération de la table va donc prendre un certain temps mais ensuite, on pioche très rapidement dans les résultats de celle ci.

Voilà le gain de temps est considérable puisqu’au lieu d’attendre 1 à 5 minutes le résultat d’execution des requêtes, le temps d’attente est passé à 1 seconde ou moins. La base Mysql est alors bien déchargée, et cela ne bouchonne plus. Le goulot d’étranglement a fini par disparaître.

Sois le premier à commenter !
 
Ajouter un commentaire »

 

    Laisser un commentaire