2011-04-13 1 views
0

L'objectif est de mettre à jour l'interface utilisateur aussi souvent que possible, mais la performance est une préoccupation et frappe à réduire au minimum devrait être la base de données.SQL: Quelle est la meilleure façon d'afficher l'activité du site en temps réel (près) sur un intervalle de temps? à savoir « Les messages envoyés dans la dernière heure »

J'ai utilisé des vues indexées pour tenir à jour les statistiques sur les articles qui ne sont pas pour un intervalle de temps spécifique mais cela à ne pas applicable que la date est non déterministe.

D'autres options seraient:

  • exécuter un travail de toutes les X minutes pour recueillir les statistiques.

  • Ajouter déclenche pour répondre aux insertions.

  • Exécuter une procédure stockée chaque fois/à une fréquence définie. (La plupart des tableaux concernés sont déjà indexés à la date concernée)

Existe-t-il d'autres options que je ne l'ai pas identifié et est-il une solution « préférée » à ce genre de problème? Comment les options Job/Trigger/SP se comparent-elles?

Répondre

0

Si vous utilisez des intervalles « fixes », vous pouvez utiliser une table de recherche qui stocke votre clé d'index ordonné en clusters. En supposant que la clé est un INT Identity que vous pouvez faire une table comme:

Time Datetime, 
Qtr_Hour int, 
Half_Hour int, 
Hour int 

exécuter une requête qui exécute:

SELECT COUNT(*) 
FROM MyTable 
WHERE ClusterKey > (SELECT Qtr_Hour 
        FROM LookupTable) 

puis mettre à jour la table avec la nouvelle valeur pertinente pour MAX(ClusterKey). Vous devez définir les détails de votre cas d'utilisation, mais si vous avez une table à une ligne que vous tenez à jour en cours d'interrogation et qu'elle utilise la clé de cluster comme point de référence, elle doit être très précise. rapide pour obtenir un delta sur le nombre de lignes depuis la dernière mise à jour.

Questions connexes