Comment trouver les tables qui sont les plus accessibles ou fréquemment utilisé dans SQL server
Je suis actuellement dans une situation où j'ai besoin de savoir les tables qui sont utilisées fréquemment ou le nombre de fois dans notre application donnée, une certaine période de temps. Permet de dire à partir de certains date de début à la date de fin.
Les détails j'aimerais me voici, le nom de la table et combien de fois il a été accédé.
Par exemple:-
tableName No.Of Access
Table5 100
Table2 80
...
Tablen n
Également si la requête ci-dessus ou si il y a un autre moyen de vérifier que les colonnes de ces tables sont souvent utilisés serait merveilleux. L'idée derrière cet exercice est de bien indexer les colonnes dans la plupart des tableaux utilisés. Mais je ne suis pas sûr si ce est la bonne façon d'aller sur l'optimisation de trop. Donc les gars si vous avez des meilleures alternatives pour déterminer comment optimiser sur le dessus, qui serait également très bien.
Nous sommes à l'aide de SQL server 2005 et l'application est en cours d'exécution sur .net framework 3.5 est hébergé sur IIS.
Si des précisions sont nécessaires, faites le moi savoir.
Vous devez vous connecter pour publier un commentaire.
La seule chose dont je suis conscient de n'importe quoi comme ce type d'information est
sys.dm_db_index_usage_stats
Edit: Il s'avère que des informations plus fiables peuvent être obtenus à partir de
La différence entre ce que le rapport est bien dans ce blog.
index_id = 1
). Si la table est un segment alors il apparaît encore dans quedmv
maisindex_id = 0
. Mais en faitselect * from sys.dm_db_index_operational_stats(db_id(),NULL,NULL,NULL)
est mieux.indexid=0
La façon dont je voudrais régler un "peu performants" de la base de données est d'identifier d'abord le problème des requêtes, puis optimze eux, plutôt que d'essayer d'optimiser tout d'un coup.
Vous pouvez utiliser le générateur de profils SQL pour identifier l'exécution de requêtes mal. Selon votre système, le suivi de la RPC appropriés, de commandes SQL, T-SQL ou une procédure stockée événements, le filtrage sur les événements qui prennent trop de temps (j'ai tendance à commencer avec > 5 secondes) ou qui effectuent des trop nombreuses lectures (j'ai commencer avec 12800 lit, d'environ 100 mo). Le suivi de ces pour une longueur appropriée de "prime time" de l'utilisation du système, et vous aurez une idée de quelles parties de votre base de données sont peu performants, et qui marchent bien (c'est à dire ceux qui n'apparaissent pas sur la liste).
Vous pouvez aussi demander à vos utilisateurs (ou vous-même) quelles sont les parties du système sont peu performants, et de vérifier les requêtes sous-jacentes.
Selon la complexité de votre système, une bonne indexation peut être un peu de un art, comme la stratégie pour optimiser une requête peut dégrader les performances de l'autre. Vous pouvez aller à travers plusieurs révisions avant d'en trouver un qui fonctionne assez bien. (C'est pourquoi nous l'appelons "tuning".)