Les compteurs de page ont un gros défaut : ils convertissent une lecture en écriture. En effet,
à chaque sollicitation de la page, il faut maintenant noter la lecture, et peut être calculer le nombre de lectures totales. Tous les systèmes qui ont alors accélérés leur affichage avec un cache sont maintenant enchaînés à un boulet.
Peter Zaitsev et Brian Aker vous propose une solution : un fichier de log. Cette approche abandonne l'immédiateté des mises à jour des compteurs. Les lectures sont enregistrés dans une table séparée, ou un fichier de log. Les ajouts de données sont atomiques, et peuvent même se passer de connexion à la base.
Puis, périodiquement, le fichier de log est relu, puis appliqué aux compteurs dans la base. Cela permet de réduire le nombre de modifications dans les tables, et avec un délai de modification court, les compteurs peuvent être aussi vieux que 5 minutes.
A noter enfin le dernier truc : au lieu de faire une mise à jour par compteur, vous pouvez regrouper tous les compteurs qui besoin d'une même mise à jour (5 lectures dans les 5 dernières minutes), pour les mettre tous à jour dans le même temps. Moins de requêtes == plus de vitesse.
- Implementing efficient counters with MySQL
- Page Counters, A different approach...
à chaque sollicitation de la page, il faut maintenant noter la lecture, et peut être calculer le nombre de lectures totales. Tous les systèmes qui ont alors accélérés leur affichage avec un cache sont maintenant enchaînés à un boulet.
Peter Zaitsev et Brian Aker vous propose une solution : un fichier de log. Cette approche abandonne l'immédiateté des mises à jour des compteurs. Les lectures sont enregistrés dans une table séparée, ou un fichier de log. Les ajouts de données sont atomiques, et peuvent même se passer de connexion à la base.
Puis, périodiquement, le fichier de log est relu, puis appliqué aux compteurs dans la base. Cela permet de réduire le nombre de modifications dans les tables, et avec un délai de modification court, les compteurs peuvent être aussi vieux que 5 minutes.
A noter enfin le dernier truc : au lieu de faire une mise à jour par compteur, vous pouvez regrouper tous les compteurs qui besoin d'une même mise à jour (5 lectures dans les 5 dernières minutes), pour les mettre tous à jour dans le même temps. Moins de requêtes == plus de vitesse.
- Implementing efficient counters with MySQL
- Page Counters, A different approach...
-
Auteur