[Sql] Optimalisation des connections

silverbeach
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 333
Inscription: 20 Juil 2005

[Sql] Optimalisation des connections

Message le Mer Déc 10, 2008 13:09

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: Tout sélectionner
.....
connect()
...les requêtes sql....
mysql_close()
.........
if(...)
{
      connect()
      ...les requêtes sql....
       mysql_close()
       .........
}
ou
Code: Tout sélectionner
.....
connect()
...les requêtes sql....
.........
if(...)
{
       .........
       ...les requêtes sql....
       .........
}
mysql_close()


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Mer Déc 10, 2008 13:23

moi je fais le 2


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Message le Mer Déc 10, 2008 13:30

Moi itou.

silverbeach
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 333
Inscription: 20 Juil 2005

Message le Mer Déc 10, 2008 14:10

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?

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Mer Déc 10, 2008 14:14

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

silverbeach
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 333
Inscription: 20 Juil 2005

Message le Mer Déc 10, 2008 14:29

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.

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Message le Mer Déc 10, 2008 15:48

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.


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Mer Déc 10, 2008 16:46

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.


raljx
WRInaute accro
WRInaute accro
 
Messages: 2823
Inscription: 10 Juil 2006

Message le Mer Déc 10, 2008 17:18

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


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Mer Déc 10, 2008 18:18

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 ?


raljx
WRInaute accro
WRInaute accro
 
Messages: 2823
Inscription: 10 Juil 2006

Message le Jeu Déc 11, 2008 14:49

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...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités