Bonjour à tous,
Je rencontre un très important écart de performance sur une requête MDX entre son execution sur une instance 2005 (9.00.5254) et 2012 (11.0.3000) : de 4s à 1min15.
Le serveur 2005 est physique, 40Go de RAM, 24 core sur 2*X5670.
Le serveur 2012 est virtuel, 8Go de RAM, 8 core, basés également sur du X5670.
La différence de config est très importante, mais pendant la requête seule 1 core est utilisé et la consommation de RAM n'augmente que très peu.
Je ne miserai donc pas énormément sur un problème d'infra.
La requête est malheureusement générée automatiquement à travers un outil sur lequel je n'ai pas la main![]()
==> 1min15
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
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 WITH MEMBER [Date Création].[Jour].Total AS Aggregate ( ( {[Date Création].[Jour].[All]} ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Qualification].[Activité].Total AS Aggregate ( ( {[Qualification].[Activité].[Courrier / Fax / Mail]} ,[Date Création].[Jour].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Demande].[Statut].Total AS Aggregate ( ( {[Demande].[Statut].[02 - A attribuer]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Ressource Rédacteur].[Ressource].Total AS Aggregate ( ( {[Ressource Rédacteur].[Ressource].[Non Affecté]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Date Evènement].[Jour].Total AS Aggregate ( ( {[Date Evènement].[Jour].[All]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ) ) SELECT NON EMPTY { {[Date Création].[Jour].Children} * {[Measures].[Nb Demandes]} , {[Date Création].[Jour].Total} * {[Measures].[Nb Demandes]} } ON COLUMNS ,NON EMPTY { {[Qualification].[Activité].[Courrier / Fax / Mail]}* {[Demande].[Statut].[02 - A attribuer]}* {[Ressource Rédacteur].[Ressource].[Non Affecté]}* {[Date Evènement].[Jour].Children} , {[Qualification].[Activité].Total}* {[Demande].[Statut].Total}* {[Ressource Rédacteur].[Ressource].Total}* {[Date Evènement].[Jour].Total} } ON ROWS FROM [Demande] WHERE { [Activité Process Rédacteur].[Activité].[Courrier / Fax / Mail] } CELL PROPERTIES VALUE ,FORMATTED_VALUE ,FORMAT_STRING ,FORE_COLOR ,BACK_COLOR ,FONT_NAME ,FONT_SIZE ,FONT_FLAGS;
En supprimant simplement les lignes de total et en utilisant un ".Members" sur les dates, on retombe à 4s soit à peu près le temps du serveur 2005.
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
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 WITH MEMBER [Date Création].[Jour].Total AS Aggregate ( ( {[Date Création].[Jour].[All]} ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Qualification].[Activité].Total AS Aggregate ( ( {[Qualification].[Activité].[Courrier / Fax / Mail]} ,[Date Création].[Jour].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Demande].[Statut].Total AS Aggregate ( ( {[Demande].[Statut].[02 - A attribuer]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Ressource Rédacteur].[Ressource].Total AS Aggregate ( ( {[Ressource Rédacteur].[Ressource].[Non Affecté]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Date Evènement].[Jour].CurrentMember ) ) MEMBER [Date Evènement].[Jour].Total AS Aggregate ( ( {[Date Evènement].[Jour].[All]} ,[Date Création].[Jour].CurrentMember ,[Qualification].[Activité].CurrentMember ,[Demande].[Statut].CurrentMember ,[Ressource Rédacteur].[Ressource].CurrentMember ) ) SELECT NON EMPTY { {[Date Création].[Jour].Children} * {[Measures].[Nb Demandes]} , {[Date Création].[Jour].Total} * {[Measures].[Nb Demandes]} } ON COLUMNS ,NON EMPTY { {[Qualification].[Activité].[Courrier / Fax / Mail]}* {[Demande].[Statut].[02 - A attribuer]}* {[Ressource Rédacteur].[Ressource].[Non Affecté]}* {[Date Evènement].[Jour].Members} // , // {[Qualification].[Activité].Total}* // {[Demande].[Statut].Total}* // {[Ressource Rédacteur].[Ressource].Total}* // {[Date Evènement].[Jour].Total} } ON ROWS FROM [Demande] WHERE { [Activité Process Rédacteur].[Activité].[Courrier / Fax / Mail] } CELL PROPERTIES VALUE ,FORMATTED_VALUE ,FORMAT_STRING ,FORE_COLOR ,BACK_COLOR ,FONT_NAME ,FONT_SIZE ,FONT_FLAGS;
Le moteur 2012 peut-il agir autant sur la dégradation de la performance d'une mauvaise requête ??
P.S. : La database SSAS a été restaurée ou redéployée depuis une solution migrée et le résultat est identique.
P.S.2 : Je n'exclu pas totalement le problème d'infra, mais la différence me parait tout de même très importante.
Partager