|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() |
Bonjour à tous,
dans mon entreprise, il a été fait le choix d'acheter un serveur quadri processeur dual-care avec 12Go de RAM. Dessus j'ai un SQLServer 2005. Le problème que nous ayons est que dès qu'une "grosse" requête (un renvoie de plusieurs 10aine de millier de lignes) passe sur le serveur et occupe 10 à 15% des ressources processus (sqlservr.exe), cela ralenti toute la boite. Savez-vous pourquoi et vers quelle piste dois-je me tourner ? merci, |
|
|
00
|
|
|
#2 | ||||
|
Membre chevronné
![]() David BAFFALEUFInscription : février 2008 Messages : 612 ![]() |
Il peut y avoir des dizaines de raisons différentes. Je commencerais par vérifier la présence de sessions bloquées pendant l'exécution de cette requête:
Code :
Code :
- Enuméres les tables impliquées dans la requête. Quelles sont leur volumétrie respective, quels sont les indexes positionnés, sur quelles colonnes, quelle est la dernière date de mise à jour des statistiques sur ces indexes ?
__________________
David B. |
||||
|
00
|
|
|
#3 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Identifiez la requête qui vous pose problème et regardez le plan d'exécution de celle-ci .. ++ |
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() |
En fait cela le fait quelque soit la "grosse" requête passée nous constatons un ralentissement sur les autres postes.
N'est-il pas possible d'avoir plusieurs "instances" en parallèle ? (je vais voir pour la première piste de mon côté) Encore merci pour vos réponses |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() |
Citation:
Inutile d'en arriver là! Il y a clairement un soucis au niveau de votre requête comme viennent de vous l'expliquer mikedavem et dbaffaleuf. Heureusement qu'on ne double pas les serveurs a chaque grosse requête trouvée :-). Postez ici le plan d’exécution de votre requête ainsi que les information d'IO en faisant précéder votre requête de SET STATISTICS IO ON puis voyez le résultat dans l'onglet message de SSMS.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Vous utilisez CROSS APPLY dans cette requête ce qui dé parallélise. Soit vous supprimez CROSS APPLY et trouvez une autre solution, soit vous ajoutez l'option MAXDOP = 1
En sus vous pouvez faire cette requête au niveau d'isolation READ UNCOMMITTED voire snapshot. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 | |
|
Membre Expert
![]() |
Citation:
Eu... j'ai du rater un post? Ou peut'on voir la requète incriminée?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#8 | ||||
|
Candidat au titre de Membre du Club
![]() |
Bonjour à tous,
Voici les statistiques IOpassée : Code :
Code :
|
||||
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() |
C'est dans cette requête
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() David BAFFALEUFInscription : février 2008 Messages : 612 ![]() |
Est-il possible de poster la requête associée à ce plan stp ?
__________________
David B. |
|
00
|
|
|
#11 | ||
|
Candidat au titre de Membre du Club
![]() |
la voici :
Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() David BAFFALEUFInscription : février 2008 Messages : 612 ![]() |
Il manque des critères:
__________________
David B. |
|
00
|
|
|
#13 | |
|
Candidat au titre de Membre du Club
![]() |
Citation:
Ah non y en manque pas ... c'est juste que j'ai enlevé 1=1 car c'est une requête générée |
|
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() |
Citation:
Oui vous remontez toute votre base de données quoi ![]() But final de la requête?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#15 | |
|
Candidat au titre de Membre du Club
![]() |
Citation:
Mais le problème c'est que dès que je lance cette requête, cela ralenti toutes les autres demandes SQL sur la base de données alors que le CPU et la RAM ne sont utilisés qu'à 15%.... c'est bien là le problème. |
|
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
Déjà ce join ne sert à rien:
Code :
LEFT JOIN sgl_champ ON sgl_champ.sglnum = artip.sglnum
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#17 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
il est normal que votre CPU ne rale pas trop, la requête ne fait pas calculs faramineux, au regard du volume de données qu'elle semble manipuler. Il est normal aussi que cela rame même si le CPU et la RAM sont peu utilisés, à mon avis, ce sont vos disques qui ne suivent pas ! (et peut etre même le réseau dans le cas présent : quel est le volume de données retourné ?) Citation:
|
|
|
|
00
|
|
|
#18 | |
|
Candidat au titre de Membre du Club
![]() |
Citation:
Oui il y a une colonne TEXT (=> Commentaire) qui sert dans l'applicatif à l'afficher si on appuie sur "/" |
|
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Passez ces colonnes en VARCHAR(MAX), ça sera déjà un bon début
|
|
|
00
|
|
|
#20 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com