[Sql] Optimalisation des connections

WRInaute occasionnel
Bonjour,

Je me pose une question par rapport à l'optimalisation de mes scripts:

Est-il préférable de faire une seule connection et déconnection ou d'en faire plusieurs?

Ex:
Code:
.....
connect()
...les requêtes sql....
mysql_close()
.........
if(...)
{
      connect()
      ...les requêtes sql....
       mysql_close()
       .........
}
ou
Code:
.....
connect()
...les requêtes sql....
.........
if(...)
{
       .........
       ...les requêtes sql....
       .........
}
mysql_close()
 
WRInaute occasionnel
en faisant le n°2, la connexion dure plus longtemps et comme par moment, j'ai des erreur de connexions (2002 / Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)), serais-t-il pas préférable d'utiliser la 1ère solution?
 
WRInaute impliqué
la solution 2

c'est ce qui coute le plus cher en ressource d'ouvrir des connexions.

tu dois avoir un autre problème avec ton serveur sql, peut etre trop de charges pour avoir ce genre de message d'erreur
 
WRInaute occasionnel
Je vais suivre la 2eme solution.

je suis en mutu (90plan chez ovh) et j'ai plusieurs sites sur cet hébergement.
je suis entrain de faire une nouvelle version du site et j'en profite pour optimaliser les requêtes.
 
WRInaute passionné
Vu qu'il y a un IF, cela signifie que la requête n'est pas toujours exécutée, donc il y a un possible gain.

Après pour que ce gain soit important ou non, ça dépend aussi du script et du type de requêtes.
 
WRInaute passionné
Effectivement Robinson.

De manière générale pour cette connexion SQL je pense qu'on peut dire :
- se connecter à la base uniquement si besoin. Par exemple lors de la première requête.
- ne se connecter qu'une seule fois durant l'exécution du script (je simplifie un peu ici :p).
- se déconnecter dès que possible. C'est à dire dès qu'il n'y a plus de requête à exécuter.

Le premier point est facile à mettre en place via le biais d'une librairie/classe gérant les appels SQL.
Le second nécessite seulement un petit mécanisme de variable globale ou persistante ; selon le contexte.
Pour le troisième, ça dépend vraiment du script... pour ma part je coupe les connexions au lancement de l'affichage du template.
 
WRInaute passionné
Pour ma part :

->Tout depend des requetes (nb d'enregistrements en table)
-> de L'optimisation de table (les indexs, les clés)
->de la requete elle-meme (construction)
->de la config de ton serveur
-> du temps que tu as consacré a cette question
-> de tes objectifs de traffic a court terme
-> de ta position en tant que developpeur
 
WRInaute passionné
raljx : pour le coup j'avoue que je ne te suis pas là. On parle bien de "la meilleure façon" de gérer les connexions MySQL depuis un script PHP, non ?
 
WRInaute passionné
17:18 oui en effet Bool j'etais a l'apero avec mon boss lorsque j'ai écrit ce post :\ ca se voit le lendemain :)

Sur mes scripts j'utilise la solution 1 cad je ferme la connexion dès que la requête est exécutée ... après je vous avoue que je n'ai pas testé les implications étant donné que j'ai mon serveur SQL principal qui est une bête de course...
 
Discussions similaires
Haut