Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3021 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQLSERVER]ne pas cacher une query ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQLSERVER]ne pas cacher une query ?

n°2033558
Profil sup​primé
Posté le 02-11-2010 à 12:11:16  answer
 

Salut,
je tente d'optimiser certaines queries.
Le problème est que si je l'exécute la première fois, ça prend plus de 30 sec mais si je la relance, c'est instantané, balot.
Je suis en prod donc je ne peux pas faire des trucs du genre DBCC DROPCLEANBUFFERS
 
Est-ce qu'il est possible de ne pas cacher juste une query ?

mood
Publicité
Posté le 02-11-2010 à 12:11:16  profilanswer
 

n°2033606
E-Nyar
I ain't no nice guy after all
Posté le 02-11-2010 à 15:06:08  profilanswer
 

Ca dépend de ce que tu veux ne pas mettre en cache ... si c'est le plan d’exécution que tu ne veux pas cacher, tu peux mettre ton query dans une SP en forçant le WITH RECOMPILE et le plan d'exécution sera recalculé à chaque fois et si juste un problème au niveau du cache des données, voit si tu peux passer un DBCC FREEPROCCACHE, sinon je vois pas...


---------------
Don't fuck me, I'm anonymous.
n°2033744
Oliiii
Posté le 03-11-2010 à 10:56:16  profilanswer
 

Utilises ca pour regarder les performances d'une query:

Code :
  1. SET statistics time, io ON


Dans la zone message tu auras des statistiques sur l'execution de ta query.
 
Tu pourras voir le temps cpu (en ms) et les differents read/write.
 
Meme si les données sont en cache tu pourras avoir le meme nombre de read (il seront logical au lieu de physical) mais c'est comparable.
 
Pour voir ce qui coince il faut aussi regarder l'execution plan et essayer d'eliminer les operations qui prennent du temps (index scan, bookmark/rid lookups, etc...)


Message édité par Oliiii le 03-11-2010 à 10:56:38
n°2034901
Profil sup​primé
Posté le 09-11-2010 à 11:04:32  answer
 

j'arrive à rien :/

 

La j'ai une query qui met 3 minutes pour tourner.
Je refresh et bings en 2 secondes j'ai mes résultats.

 

ça c'est le résultat des stats:

 
Code :
  1. SQL Server Execution Times:
  2.    CPU time = 0 ms,  elapsed time = 0 ms.
  3. (13 row(s) affected)
  4. Table 'tags'. Scan count 5, logical reads 175, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
  5. Table 'l_dates'. Scan count 0, logical reads 29208, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
  6. Table 'stats1'. Scan count 105, logical reads 58924, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
  7. SQL Server Execution Times:
  8.    CPU time = 156 ms,  elapsed time = 204 ms.


Message édité par Profil supprimé le 09-11-2010 à 11:06:57
n°2034977
Oliiii
Posté le 09-11-2010 à 14:31:15  profilanswer
 

Et le fois ou ca prends 3 mins t'as quoi comme stats?
 
58000 et 29000 c'est deja pas mal, ca fait 450MB et 226MB (a la grosse louche).
Si il faut lire ca d'un disque (physical reads) pas trop rapide ca peut prendre un certain temps, par contre ca va tres vite de la RAM (logical reads).
 
Ton probleme est plus de trouver pourquoi il fait autant de reads


Message édité par Oliiii le 09-11-2010 à 14:31:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQLSERVER]ne pas cacher une query ?

 

Sujets relatifs
[SQLSERVER]Subset ?Afficher/Cacher les div après x seconde
[SQLSERVER]Job avec un nom de db variable[SQLSERVER]update + case
[SQLSERVER]group by[SQLSERVER]split et jointure ?
Cacher l'implémentation d'une interface[RESOLU] Modifier timeout pour un mysql_query() ???
[sqlserver]Gestion des datesProblème de mise à jours avec une requête Microsoft Query
Plus de sujets relatifs à : [SQLSERVER]ne pas cacher une query ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR