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

Administration SQL Server Discussion :

Query store : quelques questions


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut Query store : quelques questions
    Salut tout le monde,

    J'ai quelques questions sur le Query Store :

    1 - J'ai lancé sur deux journées différentes la même requête sous SSMS et, à ma grande surprise, j'ai deux query id dans le query store, le 133 et le 349...
    Entre les deux, j'ai modifié les paramètres du Query Store pour enregistrer toutes les requêtes, avoir un intervalle de collecte plus court etc etc, j'ai aussi ajouté puis supprimé une PK : est-ce que ceci explique cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT q.query_id, t.query_sql_text, object_name(q.object_id) AS parent_object 
    FROM sys.query_store_query_text t JOIN sys.query_store_query q
    ON t.query_text_id = q.query_text_id 
    WHERE t.query_sql_text LIKE  N'%ZZTEST%' OR object_name(q.object_id) = 'ZZTEST'  
     
    query_id	query_sql_text	parent_object
    133	SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 100 and id_col < 1000  UNION ALL  SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 100 and id_col < 1000  order by id_col	NULL
    312	SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 1000 and id_col < 10000  UNION ALL  SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 1000 and id_col < 10000  order by id_col	NULL
    349	SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 100 and id_col < 1000  UNION ALL  SELECT * FROM [Test_new].[dbo].[ZZTest] where id_col > 100 and id_col < 1000  order by id_col	NULL
    350	SELECT q.query_id, t.query_sql_text, object_name(q.object_id) AS parent_object   FROM sys.query_store_query_text t JOIN sys.query_store_query q  ON t.query_text_id = q.query_text_id   WHERE t.query_sql_text LIKE  N'%ZZTEST%100%'	NULL
    2 - Dans le Query Store je peux forcer une requête à utiliser un plan avec un index que je viens de supprimer et SQL Server ne râle pas; c'est normal?

    3 - Dans les rapports prédéfinis, comme Top Ressources Consumers, est-il possible de filtrer sur le user ou d'éliminer les requêtes système, pour éviter qu'elles ne polluent le résultat.

    Bonne journée à tous

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Pas de réponse?
    Personne n'utilise cet outil?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 010
    Billets dans le blog
    6
    Par défaut
    Tout altération d'objet afférent à une requête (table, contrainte, index, statistiques...) provoque l'invalidation immédiate de tous les plans de requête invoquant cette table (requête ad hoc, vue, procédure, fonction, déclencheur...)

    A +
    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/ * * * * *

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Ah oui, c'est vrai, c'est aussi le cas pour Oracle...
    Mais il est étonnant que dans ce cas le Query Store n'indique pas, d'une façon ou d'une autre, que ce plan est invalide car le fait de le forcer à nouveau ne marche pas... une future amélioration?

    Sinon pour la question 3? Dans le top des requêtes affichées, plusieurs viennent de SQL Server, pas des requêtes utilisateur et cela pollue les graphiques. Je sais comment enlever du Query Store une requête mais ce serait mieux de filtrer sur le user qui lance les requêtes non?

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Salut tout le monde,
    1 - J'ai lancé sur deux journées différentes la même requête sous SSMS et, à ma grande surprise, j'ai deux query id dans le query store, le 133 et le 349...
    Entre les deux, j'ai modifié les paramètres du Query Store pour enregistrer toutes les requêtes, avoir un intervalle de collecte plus court etc etc, j'ai aussi ajouté puis supprimé une PK : est-ce que ceci explique cela?
    Hello,
    De manière générale tu auras une nouvelle entrée de requête si le texte change ou si certains paramètres de contexte, changement de numéro d'objet, handle de la requête ou type de paramétrisation.

    Je dirai que de ton cas le fait d'ajouter une PK peut avoir fait que ton identifiant d'objet a changé ... Regarde aussi les valeurs de colonne statement_sql_handle / query_parameterization_type pour voir si tu n'as pas qqch de différent.


    Citation Envoyé par Ikebukuro Voir le message
    2 - Dans le Query Store je peux forcer une requête à utiliser un plan avec un index que je viens de supprimer et SQL Server ne râle pas; c'est normal?
    Non SQL Server ne râlera mais ton plan sera considéré comme invalide par le query store et ne sera plus utilisé (même si forcé)

    Citation Envoyé par Ikebukuro Voir le message
    3 - Dans les rapports prédéfinis, comme Top Ressources Consumers, est-il possible de filtrer sur le user ou d'éliminer les requêtes système, pour éviter qu'elles ne polluent le résultat.
    A ma connaissance non et il faut passer par les queries directement. Tu peux filtrer sur la colonne is_internal_query pour les requêtes systèmes.

    Tu n'as pas de notion de user ici car statistiques sont collectées et aggrégées par query. A ma connaissance, pas ce niveau de détail via le Query Store. Il faut utiliser le profiler ou éventuellement les extended events dans ce cas.

    ++

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Merci à vous tous, et à bientôt pour de nouvelles questions

Discussions similaires

  1. SQL Query sur deux tables différentes.
    Par kabal22 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/12/2005, 17h52
  2. Deux questions
    Par sheira dans le forum ASP
    Réponses: 10
    Dernier message: 25/11/2005, 12h49
  3. [Together] Deux questions sur Borland Together UML
    Par srvremi dans le forum Autres
    Réponses: 4
    Dernier message: 02/11/2005, 09h32
  4. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 14h29
  5. deux questions
    Par Invité4 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/03/2005, 14h20

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