IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Stats sur les tables les plus utilisées [2012]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut Stats sur les tables les plus utilisées
    Bonjour,

    Je souhaite faire des stats sur l'utilisation de ma db.
    Je souhaite savoir quelles sont les tables les plus lues (SELECT) par les utilisateurs, je suis plus intéressé par une tendance que par un chiffre exact.
    Point important , je souhaite pouvoir exclure certains users de ces statistiques. Idéalement exclure les schemas qui ne m'intéressent pas.

    J'ai trouvé une requête qui permet d'avoir de telles stats mais je ne peux faire intervenir la notion de user dedans.

    La voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
    	OBJECT_SCHEMA_NAME(s.object_id) as nom_schema
    	,object_name(s.object_id) as nom_table
    	,SUM(user_seeks + user_scans + user_lookups) as lectures
    	,SUM(user_updates) as ecritures
    FROM sys.dm_db_index_usage_stats AS s
    INNER JOIN sys.indexes AS i ON s.object_id = i.object_id AND i.index_id = s.index_id
    WHERE 
    	objectproperty(s.object_id,'IsUserTable') = 1
    	/*Database ciblée*/
    	AND s.database_id = db_id('maDatabase')
    	/*Exclusion schemas*/
    	AND OBJECT_SCHEMA_NAME(s.object_id) NOT IN ('staging','log') 
    GROUP BY OBJECT_SCHEMA_NAME(s.object_id),object_name(s.object_id)
    ORDER BY lectures DESC
    Une idée ? Un moyen de grouper par utilisateur? J'imagine que ce n'est pas possible avec cette query...

    Merci d'avance ,
    Vinc

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Un moyen de grouper par utilisateur?
    L'audit de l'utilisation des index d'une table est une chose, celui qui concerne les utilisateurs y ayant eu accès en est une autre
    Pour la seconde, il vous faut passer par un audit de sécurité pour la base de données concernée : là vous pourrez filtrer sur les tables, et donc les schémas à auditer.
    Cela est détaillé dans le chapitre 20 du livre référencé dans ma signature

    @++

  3. #3
    Membre très actif Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 333
    Par défaut
    En ce qui concerne la partie stat sans lien avec les utilisateurs.
    j'aime cette requête trouvée sur stackoverflow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    select  db_name(US.database_id)
    	, object_name(US.object_id)
    	, I.name as IndexName
    	, OS.leaf_allocation_count
    	, OS.nonleaf_allocation_count
    	, OS.leaf_page_merge_count
    	, OS.leaf_insert_count
    	, OS.leaf_delete_count
    	, OS.leaf_update_count
    	, *
    from	sys.dm_db_index_usage_stats US
    	join sys.indexes I 
    		on I.object_id = US.object_id 
    		and I.index_id = US.index_id
    	join sys.dm_db_index_operational_stats(db_id(), null, null, null) OS
    		on OS.object_id = I.object_id and OS.index_id = I.Index_id
    where	I.type <> 0  -- not heap
    	and object_name(US.object_id) not like 'sys%'
    	and i.type = 1 --pour n'avoir que les tables, pour avoir tous les index mettre cette ligne en commentaire
    order by	OS.leaf_allocation_count desc, 
    		OS.nonleaf_allocation_count desc, 
    		OS.leaf_page_merge_count desc,
    		US.User_updates desc, 
    		US.User_Seeks desc, 
    		US.User_Scans desc, 
    		US.User_Lookups desc
    elle donne plus de détail

    Cordialement,

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Cette requête est assez stupide car elle ne prend pas en compte les tables et filtre sur des noms ne commençant pas par sys ce qui n enlève pas les objets systèmes

    A Plus
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 212
    Par défaut
    Je suis finalement passé par un audit de sécurité comme l'a suggéré elsuket.
    Ca semble répondre à mon besoin merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2015, 20h04
  2. Stats sur des tables partitionnées
    Par LBO72 dans le forum Administration
    Réponses: 1
    Dernier message: 14/06/2010, 15h45
  3. [AJAX] Faut-il faire de l'AJAX sur une table de plus de 11'000 entrées ?
    Par Dsphinx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/08/2007, 16h58
  4. Réponses: 5
    Dernier message: 26/11/2006, 17h32
  5. [ASE]les tables les plus utilisé
    Par arona dans le forum Sybase
    Réponses: 4
    Dernier message: 21/09/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo