2009-09-20 7 views
0

Je me demande si je devrais changer de système.Suivi des vues pour le contenu dans mysql

Actuellement lorsqu'une vidéo est visionnée, il exécute une requête qui ne

UPDATE table SET hits=hits+1 WHERE id = $id. 

très simple, sauf qu'ils apparaissent dans la requête lente connecter tout le temps, parfois avec 3-4 secondes de query_time. Que faire si j'insère chaque vue sous forme de nouvelle ligne dans une table de mémoire et que je valide les modifications apportées à la base de données avec cron toutes les heures? Y aura-t-il une différence significative de performance? Y a-t-il des alternatives?

Répondre

1

Vous pouvez vérifier que vous avez un index sur l'ID car cette mise à jour ne devrait pas prendre beaucoup de secondes. C'est à propos de la mise à jour la plus simple que vous puissiez faire pour que vous ne puissiez pas vraiment l'accélérer.

Si c'est le cas, je pense que vous avez d'autres problèmes avec votre base de données.

+0

yah J'ai obtenu l'index là-bas, mais comme le trafic a augmenté, il y a une augmentation significative de ces requêtes (évidemment). Le site fait actuellement environ 100k uniques par jour .... avec peut-être 500.000 pages vues. –

+0

Toujours pas un très grand volume - qu'est-ce que la requête utilise réellement l'index et est-ce que tout le reste est lent? – Mark

0

Je l'aborderais probablement comme vous le pensez. Consignez les vues dans une table simple optimisée pour les écritures et mettez à jour périodiquement le nombre de vues et purgez la table de journalisation.

Avec le type de trafic que vous voyez, vous pouvez constater qu'un tel système fonctionnera bien si vous exécutez votre cron plus d'une fois par heure. Comme Mark dit, cependant, vous avez probablement quelque chose d'autre qui devrait être compris.

Questions connexes