Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/01/2008, 22h15   #1
Membre régulier
 
Inscription : mai 2003
Messages : 127
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 127
Points : 87
Points : 87
Par défaut Performances d'un update

Salut à tous,

Je me demande comment implémenter une fonctionnalité afin qu'elle soit la plus performante possible.

J'ai un certain nombre de blogs (il peut être assez élevé, 1000+) et je dois implémenter un compteur de visites pour ces blogs.

Quelle est la meilleure solution?

1) J'insère un tuple contenant l'id du blog, la date et l'adresse ip du visiteur à chaque fois que quelqu'un visite un blog. Une fois par jour je vide cette table et j'incrémente le champs nb_visits du blog correspondant.

2) A chaque fois que quelqu'un visite le blog, j'incrémente directement le compteur.

Ce qui m'ennuie avec la solution 2, c'est que si mes souvenirs sont bons, la table blog va être lockée lors de la mise à jour du champs nb_visits. A moins que le lock ne soit placé qu'au niveau du tuple? J'ai donc peur que étant donné le nombre élevé de blogs et de visites, le temps d'attente pour obtenir le lock soit long.

La solution 1 me semble plus performante, mais ce qui m'ennuie avec celle-là c'est que pour afficher le compteur de visites il va falloir faire un count sur le blog_id dans une table qui va contenir des centaines de milliers de tuples.

Voilà, j'espère être clair.

Merci d'avance pour vos réponses!
Mookie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 23h05   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Si la seule chose qui t'intéresse est d'incrémenter un compteur, sans garder d'historique des visites, la solution 2 s'impose.

Ensuite, tout dépend du moteur de stockage. InnoDB permet de faire le lock au niveau du tuple, ça devrait régler le problème.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 10h23   #3
Membre régulier
 
Inscription : mai 2003
Messages : 127
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 127
Points : 87
Points : 87
Ok, merci pour l'info!
Mookie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h07.


 
 
 
 
Partenaires

Hébergement Web