Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2011, 16h42   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Par défaut Temps d'execution d'une requete

Bonjour,

suite a un changement de serveur j'ai une de mes requêtes qui est devenu très longue a exèctuer 12minutes58 contre 1minute09 auparavant.

Ancien serveur
Windows serveur 2003 avec sql 2008 SP1
Processeur Xeon 5410 2.33 Ghz 8 Go RAM

Nouveau serveur
Windows serveur 2008 R2 SP1 avec sql 2008 SP2
Processeur Xeon 5504 2.00 Ghz 18 Go RAM

Taille de la base : 1.5 Go

j'ai comparé tout les option de "sp_configure" avec les options avancé et elle sont identique

Je ne sais plus ou cherché si vous avez des pistes je suis preneur

Merci de votre aide

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 17h29   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
Il faut nous dire comment le changement de serveur s'est effectué, via :
--> une réplication ?
--> un backup/restore ?
--> wizard import/export ? dans ce cas les index sont-ils pris en compte ?

vérifie si les index posés sur les tables (membres de ta requête dans l'ancien serveur) sont également présents dans le nouveau serveur
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 17h32   #3
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Bonjour,

- Quelle configuration CPU sur vos 2 machines ? (Nb de sockets, nb de cores totales)
- Est ce que l'option max degree of parallelism est configurée ? Si oui comment ?
- Est ce qu'il n'y a pas de limitation au niveau du paramètre max server memory (MB) sur le nouveau serveur ?
- Avez vous éventuellement remis les statistiques et les index à jour sur le nouveau serveur ?

En prenant une requête de référence et si vous activez les options de statistiques SET STATISTICS IO et SET STATISTICS TIME qu'obtenez vous sur l'ancien et le nouveau serveur ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 18h43   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonsoir,

Merci pour ses premières éléments.

Voici les répnses a vos questions

Le changement a etait fait par une reinstall total de l'ensemble et un Backup/Restore des bases.

Nb de sockets : 1 , nb de cores totales : 4 sur les deux serveurs

max degree of parallelism 0 64 0 0

max server memory (MB) 16 2147483647 2147483647 2147483647

Test avec les option IO et TIME
Nouveau SERVEUR
Temps d'analyse et de compilation de SQL Server :
, Temps UC = 0*ms, temps écoulé = 6*ms.

(271965*ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 1, lectures logiques 24715, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

SQL Server \endash Temps d'exécution*:
, Temps UC = 3619*ms, temps écoulé = 25976*ms.

Ancien serveur
(264775 ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 1, lectures logiques 27167, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

SQL Server \endash Temps d'exécution :
, Temps UC = 3625 ms, temps écoulé = 20378 ms.

Javais fait un reorg de l'index et une mise a jour des stats

Merci

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 19h49   #5
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
J'ai relancé ma requete sur les 2 serveurs avec les options TIME et IO voici ce que cela donne :

Ancien SERVEUR

(109 ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 58, lectures logiques 1784561, lectures physiques 159, lectures anticipées 24433, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_COLLABORATEUR'. Nombre d'analyses 6, lectures logiques 102, lectures physiques 1, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_DOCENTETE'. Nombre d'analyses 7936, lectures logiques 18420462, lectures physiques 122, lectures anticipées 2324, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_ARTICLE'. Nombre d'analyses 20, lectures logiques 2417652, lectures physiques 3013, lectures anticipées 1533, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 26031, lectures logiques 2420004, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

SQL Server \endash Temps d'exécution :
, Temps UC = 161324 ms, temps écoulé = 50453 ms.


Nouveau Serveur

(109*ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 26088, lectures logiques 637777725, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_COLLABORATEUR'. Nombre d'analyses 6, lectures logiques 102, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_DOCENTETE'. Nombre d'analyses 7944, lectures logiques 18439086, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_ARTICLE'. Nombre d'analyses 20, lectures logiques 2417652, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 33982, lectures logiques 1425946, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

SQL Server \endash Temps d'exécution*:
, Temps UC = 3017011*ms, temps écoulé = 766240*ms.

On remarque que le nombre d'analyse passe de 58 a 26088 mais je voie pas du tout pourquoi !!!!!!

Merci de votre aide

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 20h08   #6
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Que vous donne un SET STATISTICS PROFILE ON sur vos 2 requêtes ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 22h39   #7
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonsoir

avec SET STATISTICS PROFILE ON

Il m'ouvre une deuxieme fenetre avec le deroulement de ma requetes je ne les ai pas mis car tres long dites moi si il vous les faut (213 Lignes)
Merci
thierry

Nouveau Serveur

Temps d'analyse et de compilation de SQL Server :
, Temps UC = 10826*ms, temps écoulé = 10827*ms.

SQL Server \endash Temps d'exécution*:
, Temps UC = 0*ms, temps écoulé = 0*ms.

(109*ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 26088, lectures logiques 637777725, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_COLLABORATEUR'. Nombre d'analyses 6, lectures logiques 102, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_DOCENTETE'. Nombre d'analyses 7937, lectures logiques 18422790, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_ARTICLE'. Nombre d'analyses 20, lectures logiques 2417652, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 33982, lectures logiques 1425946, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

(213*ligne(s) affectée(s))

SQL Server \endash Temps d'exécution*:
, Temps UC = 3014467*ms, temps écoulé = 765771*ms.


Ancien Serveur

Temps d'analyse et de compilation de SQL Server :
, Temps UC = 10360*ms, temps écoulé = 10360*ms.

SQL Server \endash Temps d'exécution*:
, Temps UC = 0*ms, temps écoulé = 0*ms.

(109*ligne(s) affectée(s))
Table 'F_DOCLIGNE'. Nombre d'analyses 58, lectures logiques 1784561, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_COLLABORATEUR'. Nombre d'analyses 6, lectures logiques 102, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_DOCENTETE'. Nombre d'analyses 7946, lectures logiques 18443742, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'F_ARTICLE'. Nombre d'analyses 20, lectures logiques 2417652, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 26031, lectures logiques 2420004, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.
Table 'Worktable'. Nombre d'analyses 0, lectures logiques 0, lectures physiques 0, lectures anticipées 0, lectures logiques de données d'objets volumineux 0, lectures physiques de données d'objets volumineux 0, lectures anticipées de données d'objets volumineux 0.

(212*ligne(s) affectée(s))

SQL Server \endash Temps d'exécution*:
, Temps UC = 163622*ms, temps écoulé = 48724*ms.
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 22h50   #8
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
le nouveau serveur est une machine virtuelle ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 23h30   #9
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Vous pouvez poster directement les plans d'exécutions utilisés par la requête sur les 2 serveurs.

Est-ce qu'une autre requête vous donne les mêmes différences ?`

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 01h35   #10
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonsoir,

non le nouveau n'est pas une machine virtuel, et oui c'est la seul requete qui me pose problème.

Par contre les plans d'execution des deux requètes sont trop volumineux pour etre poster ici (max 60 000 characteres et il font plus de 100 000)

je les ai regardés vite fait (323 lignes....) il y a peu d'écart entre les 2(mais je comprend pas tout !!!)

Merci encore pour votre aide et votre temps

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 08h04   #11
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Citation:
Par contre les plans d'execution des deux requètes sont trop volumineux pour etre poster ici (max 60 000 characteres et il font plus de 100 000)
Désactiver l'option SET STATISTICS PROFILE et activer l'option "afficher le plan d'exécution réel" dans SSMS.

Envoyez nous ensuite vos les plans d'exécutions au format "graphique" (clic droit enregistrer sous au format .sqlplan). Ce qui nous intéresse ici c'est de voir la partie qui concerne votre table 'F_DOCLIGNE' sur vos 2 serveurs.

Au pire dites nous quels sont les opérateurs utilisés dans les 2 cas.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 10h23   #12
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonjour,

j'ai fait ce que vous m'aviez demander, mais les fichiers .sqlplan font 1 Mo chacun (je peu les mettre sur un FTP si besoin)

Et des opérations il y en a beaucoup...

Se que je note sur le nouveau serveur c'est l'apparition d'opération
- FILTRE
- INDEX SPOOL
- CLUSTERED INDEX SCAN (Actual number of ROW : 272 000 environ)

contre sur l'ancien
- CLUSTERED INDEX SEEK (Actual number of ROW : 17 000 environ)

Merci

Thierry

au cas ou je post ma requete
Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
SELECT do_piece, do_date, ct_num, dl_ligne, ar_ref, ar_refcompose, dl_design, dl_qte, dl_montantht/dl_qte AS pu, 
co_nom, dl_montantht, dl_montantht, 0, pa,cr, comintermediaire, margepcent, marge, ajustpa, pa_rectifie 
 
FROM 
f_docligne 
LEFT JOIN f_collaborateur RepDoc ON f_docligne.CO_No = Repdoc.co_no
 
WHERE 
ar_ref = ar_refcompose
AND ar_refcompose IS NOT NULL
AND ar_refcompose <>''
AND dl_qte<>0
AND do_piece IN
(
SELECT 
f_docentete.do_piece
 
FROM bor_view_docligne_ctrl, 
f_docentete
LEFT JOIN f_collaborateur RepDoc ON f_docligne.CO_No = Repdoc.co_no
 
WHERE 
bor_view_docligne_ctrl."do_piece" = f_docentete.do_piece 
AND bor_view_docligne_ctrl."do_type" = f_docentete.do_type 
AND bor_view_docligne_ctrl."do_domaine" = f_docentete.do_domaine 
AND (
(bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")>0.5
OR (bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")<-0.5
)
AND year(f_docentete.do_date)>2008
AND f_docentete.do_type<7
)
 
union ALL
 
SELECT do_piece, do_date, ct_num, dl_ligne, ar_ref, ar_refcompose, dl_design, dl_qte, dl_montantht/dl_qte AS pu, 
co_nom, 0, 0, dl_montantht, pa,cr, comintermediaire, margepcent, marge, ajustpa, pa_rectifie 
 
FROM 
f_docligne 
LEFT JOIN f_collaborateur RepDoc ON f_docligne.CO_No = Repdoc.co_no
 
WHERE 
ar_ref <> ar_refcompose
AND ar_refcompose IS NOT NULL
AND ar_refcompose <>''
AND dl_qte<>0
AND do_piece IN
(
SELECT 
f_docentete.do_piece
 
FROM bor_view_docligne_ctrl, 
f_docentete
LEFT JOIN f_collaborateur RepDoc ON f_docentete.CO_No = Repdoc.co_no
 
WHERE 
bor_view_docligne_ctrl."do_piece" = f_docentete.do_piece 
AND bor_view_docligne_ctrl."do_type" = f_docentete.do_type 
AND bor_view_docligne_ctrl."do_domaine" = f_docentete.do_domaine 
AND (
(bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")>0.5
OR (bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")<-0.5
)
AND year(f_docentete.do_date)>2008
AND f_docentete.do_type<7
)
 
union ALL
 
SELECT do_piece, do_date, ct_num, dl_ligne, ar_ref, ar_refcompose, dl_design, dl_qte, dl_montantht/dl_qte AS pu, 
co_nom, dl_montantht, 0, 0, pa,cr, comintermediaire, margepcent, marge, ajustpa, pa_rectifie 
 
FROM 
f_docligne 
LEFT JOIN f_collaborateur RepDoc ON f_docligne.CO_No = Repdoc.co_no
 
WHERE 
 
(ar_refcompose IS NULL
OR ar_refcompose ='')
 
AND dl_qte<>0
AND do_piece IN
(
SELECT 
f_docentete.do_piece
 
FROM bor_view_docligne_ctrl, 
f_docentete
LEFT JOIN f_collaborateur RepDoc ON f_docentete.CO_No = Repdoc.co_no
 
WHERE 
bor_view_docligne_ctrl."do_piece" = f_docentete.do_piece 
AND bor_view_docligne_ctrl."do_type" = f_docentete.do_type 
AND bor_view_docligne_ctrl."do_domaine" = f_docentete.do_domaine 
AND (
(bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")>0.5
OR (bor_view_docligne_ctrl."total_ht_from_composant" - bor_view_docligne_ctrl."total_ht")<-0.5
)
AND year(f_docentete.do_date)>2008
AND f_docentete.do_type<7
)
;;
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 10h53   #13
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
Peux-tu vérifier si les index crés sur les tables f_docligne et f_collaborateur RepDoc sont les mêmes sur les deux serveurs ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 11h17   #14
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonjour,

oui tout est identiques a tel point que je viens backup/Restore la base du nouveau serveur sur l'ancien pour refaire des test et c'est pareille voir encore plus rapide sur l'ancien

Heuresement qu'on est en période de fête sinon j'aurais tout bazardé déjà

Merci encore de votre aide

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 11h55   #15
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Pouvez-vous tout de même faire une mise à jour des statistiques de votre table f_docligne en FULL SCAN et de refaire un test par la suite ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 14h38   #16
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonjour,

j'ai fait un
UPDATE STATISTICS [dbo].[F_DOCLIGNE]
WITH FULLSCAN
GO

et relancé les test, pas d'amélioration. (j'avais deja fait un FULLSCAN sur l'ensemble des tables et des vues)

Merci

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 14h45   #17
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Ok.

Je n'ai pas regardé le contenu de votre requête visiblement l'optimiseur ne veut pas utiliser votre index. Les index SPOOL sont en général utilisés lorsque la table n'est pas indexée. (je suppose ici que vos index ne sont pas fragmentés ou très peu).

Vous pouvez tenter de forçer l'utilisation de votre index pour voir si les performances s'améliorent pour votre requête (WITH INDEX ...)

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h59   #18
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous pouvez déjà enlever vos UNION ALL je pense.
Est-ce que les résultats sont équivalents avec cette requête ?
Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SELECT do_piece
     , do_date
     , ct_num
     , dl_ligne
     , ar_ref
     , ar_refcompose
     , dl_design
     , dl_qte
     , dl_montantht / dl_qte AS pu
     , co_nom
     , case
         when (ar_ref = ar_refcompose AND ar_refcompose <> '')
           OR ar_refcompose IS NULL
           OR ar_refcompose = ''
         then dl_montantht
         else 0
       end
     , case when ar_ref  = ar_refcompose AND ar_refcompose <> '' then dl_montantht else 0 end
     , case when ar_ref <> ar_refcompose AND ar_refcompose <> '' then dl_montantht else 0 end
     , pa
     , cr
     , comintermediaire
     , margepcent
     , marge
     , ajustpa
     , pa_rectifie 
  FROM f_docligne 
       LEFT OUTER JOIN f_collaborateur RepDoc
         ON f_docligne.CO_No = Repdoc.co_no
 WHERE dl_qte <> 0
   AND do_piece IN (SELECT fde.do_piece
                      FROM bor_view_docligne_ctrl AS bvd
                           INNER JOIN f_docentete AS fde
                             ON fde.do_piece   = bvd.do_piece 
                            AND fde.do_type    = bvd.do_type
                            AND fde.do_domaine = bvd.do_domaine
                           LEFT OUTER JOIN f_collaborateur AS RepDoc
                             ON Repdoc.co_no = f_docligne.CO_No
-- je ne suis pas persuadé qu'il faille une jointure ici, f_collaborateur n'étant utilisé nulle part dans cette sous-requête
-- d'ailleurs je ne suis même pas persuadé qu'il faille une sous-requête, une simple jointure pourrait suffire ?
                     WHERE bvd.total_ht_from_composant - bvd.total_ht NOT BETWEEN -0.5 AND 0.5
                       AND fde.do_date >= convert(datetime, '20090101', 112)
                       AND fde.do_type < 7)
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 16h38   #19
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 47
Points : 12
Points : 12
Bonjour,

je viens de tester votre requete et elle semble donné un résultat identique (faut que je verifie le tout)

Une petite difference quand meme le temps d'execution !!!

Ancien serveur : 1'09''
Nouveau serveur : 12'58''
New req new serveur : 18''

Je ne suis pas le créateur de la requete mais elle semble comporté plus de sous requete et plus de calcul sont-il tous inutile ??

En tous cas merci pour se pas de géant.

Je verifie le tout et reviens vous donner les résultats.

Thierry
Avatar69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 18h10   #20
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par Avatar69 Voir le message
Je ne suis pas le créateur de la requete mais elle semble comporté plus de sous requete et plus de calcul sont-il tous inutile ??
La requête séparait les mêmes données en trois sous-ensembles distincts :
  1. ar_ref = ar_refcompose AND ar_refcompose <> ''
  2. ar_ref <> ar_refcompose AND ar_refcompose <> ''
  3. ar_refcompose is null OR ar_refcompose = ''
Et seules trois colonnes du résultat variaient.

J'ai regroupé les sous-ensembles en un ensemble complet (plus de filtre) et j'ai procédé à l'attribution des colonnes avec un CASE.

Il se pourrait que la requête soit encore améliorable, mais là j'en suis moins sûr :
Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
SELECT do_piece
     , do_date
     , ct_num
     , dl_ligne
     , ar_ref
     , ar_refcompose
     , dl_design
     , dl_qte
     , dl_montantht / dl_qte AS pu
     , co_nom
     , case
         when (ar_ref = ar_refcompose AND ar_refcompose <> '')
           OR ar_refcompose IS NULL
           OR ar_refcompose = ''
         then dl_montantht
         else 0
       end
     , case when ar_ref  = ar_refcompose AND ar_refcompose <> '' then dl_montantht else 0 end
     , case when ar_ref <> ar_refcompose AND ar_refcompose <> '' then dl_montantht else 0 end
     , pa
     , cr
     , comintermediaire
     , margepcent
     , marge
     , ajustpa
     , pa_rectifie 
  FROM f_docligne 
       LEFT OUTER JOIN f_collaborateur RepDoc
         ON f_docligne.CO_No = Repdoc.co_no
       INNER JOIN f_docentete AS fde
         ON fde.do_piece = f_docligne.do_piece
       INNER JOIN bor_view_docligne_ctrl AS bvd
         ON bvd.do_piece   = fde.do_piece 
        AND bvd.do_type    = fde.do_type
        AND bvd.do_domaine = fde.do_domaine
 WHERE dl_qte <> 0
   AND bvd.total_ht_from_composant - bvd.total_ht NOT BETWEEN -0.5 AND 0.5
   AND fde.do_date >= convert(datetime, '20090101', 112)
   AND fde.do_type < 7
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h04.


 
 
 
 
Partenaires

Hébergement Web