OVH Cloud OVH Cloud

Performances requêtes

15 réponses
Avatar
Brigitte
Bonsoir,

J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
Par contre, est-il possible d'optimiser ce temps en modifiant des paramètres
à l'aide de sp_configure?

Merci

Bonne soirée

Brigitte

5 réponses

1 2
Avatar
SQLpro [MVP]
Voyez si la désactivation de l'hyperthreading apporte un bénéfice. En
effet un problème connu sous l'hyperthreading Intel pénalise MS SQL Server.
Voici le post d'un blog de l'équipe de dev SQL Server de MS :
http://blogs.msdn.com/slavao/archive/2005/11/12/492119.aspx

et quelques notes sur le sujet :
http://www.lexpansion.com/art/32.0.137448.0.html
http://news.zdnet.co.uk/0,39020330,39237341,00.htm

De même activez le masque d'affinité avec 75 % de proc ,bas à SQL Server
peut être bénéfique
enfin, vous pouvez tenter le mode fibre

A +


Brigitte a écrit :
Bonjour,

Voici serveur sur lequel la requête met 12 secondes :
Manhattan :
DL560 G1
11.6 Go RAM
4 Xeon 3.0 GHz HyperThreading activé (=8 processeurs logiques)
Carte controlleur raid 6400 (192 Mo de cache, le cache en écriture est
désactivé) (8 disques de 72 Go en raid 5)
Serveur sur lequel la requête dure 24 secondes :
Sqls01 :
DL380 G3
6 Go RAM
2 Xeon 2.8 GHz HyperThreading activé (=4 processeurs logiques)
Carte controlleur raid 641 (192 Mo de cache, dont 50% en écriture) (4
disques de 146 Go en raid 5)

Merci

Bonne journée

Brigitte


"Racimo" a écrit :

Quelle est la vitesse des disques (+ conf RAiD) sur les 2 serveurs?

"Brigitte" a écrit :

Merci, j'ai des clauses from du type et plusieurs dans la même requête.
Est-ce possible d'utiliser toujours cette option :

/***************************************************************************/
/* CLAUSE FROM 22
*/
/***************************************************************************/
SET @Sql_From22 = ''
SET @Sql_From22 = @Sql_From22 + 'FROM T_Cotation AS C '
SET @Sql_From22 = @Sql_From22 + ' INNER JOIN TD_PayOff_Type AS PT ON
C.IdProduit = PT.Id '
SET @Sql_From22 = @Sql_From22 + ' INNER JOIN T_COTATION_PANIER AS P ON C.Id
= P.IdCotation '
SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_SousJacent As SJ ON
C.IdSousJacent = SJ.Id '
SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Client_Final As CF ON
C.IdClient = CF.Id '
SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Utilisateur As U ON C.IdUser =
U.Id '
SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN TD_SaleCenter As SC ON
CF.IdSaleCenter = SC.Id '
SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Cotation_Reponse AS CR ON
CR.IdCotation = C.Id AND CR.ID = (select max(id) from T_Cotation_Reponse
where IdCotation = C.Id) '

Merci

Brigitte

"SQLpro [MVP]" a écrit :

Brigitte a écrit :
Bonjour,

A quel niveau, faut-il mettre cette option?



SELECT ...
FROM ...
OPTION (MAXDOP 1)


A +

Merci

Brigitte

"SQLpro [MVP]" a écrit :

Philippe T [MS] a écrit :
Bonjour,

EXEC sp_configure 'max degree of parallelism', '1'


Mieux vaut danc ce cas utiliser le tag OPTION (MAXDOP 1) dans la requête.

A +



Cela supprime la paramllélisation sur plusieurs processeurs mais je ne sais
pas si c'est très conseillé car pour d'autres requêtes cela pourrait
s'avérer contre performant.

----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Brigitte" wrote in message
news:
Bonsoir,

J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
Par contre, est-il possible d'optimiser ce temps en modifiant des
paramètres
à l'aide de sp_configure?

Merci

Bonne soirée

Brigitte




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************











--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Brigitte
merci, comment activer l'affinity mask avec 75% proc.

Brigitte

"Brigitte" a écrit :

Bonsoir,

J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
Par contre, est-il possible d'optimiser ce temps en modifiant des paramètres
à l'aide de sp_configure?

Merci

Bonne soirée

Brigitte


Avatar
SQLpro [MVP]
Brigitte a écrit :
merci, comment activer l'affinity mask avec 75% proc.



C'est un masque binaire. Pour activer les proc 0 1 et 2 :

0^2 + 1^2 + 2^2 = 1 + 2 + 4 = 7

sp_configure 'affinity mask', '7'

A +


Brigitte

"Brigitte" a écrit :

Bonsoir,

J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
Par contre, est-il possible d'optimiser ce temps en modifiant des paramètres
à l'aide de sp_configure?

Merci

Bonne soirée

Brigitte






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Racimo
C'est bien ce que je pensais...L'explication est probablement liée aux
configuration disque...Votre serveur à 4 disques semble faire trop de paging
pour compenser la conf RAID5 en écriture.

Une configuration RAID5 avec 4 disques signifie que pour chaque ecriture 4
IO sont effectués (1 par disque). Une configuration avec 8 disques entraine
8 IO soit le double de la première conf RAID. Dans ce cas, SQL fait
beaucoup plus plus de paging RAM/DD et soit la mémoire est suffisante pour
limiter ce paging soit elle ne l'est pas. IL ne faut pas oublier que le
RAID5 n'est PAS adapté systèmes qui font beaucoup d'écriture. Je vous
conseillerais d'augmenter la mémoire cache et/ou la RAM sur le serveur à 4
disques durs. Déplacer les logs sur un RAID1 pourrait également être utile
(logs = 95% d'écriture) devrait également donner un bon coup de boost...

en écriture RAID5, il ne faut pas oublier que pour

"Brigitte" a écrit :

Bonjour,

Voici serveur sur lequel la requête met 12 secondes :
Manhattan :
DL560 G1
11.6 Go RAM
4 Xeon 3.0 GHz HyperThreading activé (=8 processeurs logiques)
Carte controlleur raid 6400 (192 Mo de cache, le cache en écriture est
désactivé) (8 disques de 72 Go en raid 5)
Serveur sur lequel la requête dure 24 secondes :
Sqls01 :
DL380 G3
6 Go RAM
2 Xeon 2.8 GHz HyperThreading activé (=4 processeurs logiques)
Carte controlleur raid 641 (192 Mo de cache, dont 50% en écriture) (4
disques de 146 Go en raid 5)

Merci

Bonne journée

Brigitte


"Racimo" a écrit :

> Quelle est la vitesse des disques (+ conf RAiD) sur les 2 serveurs?
>
> "Brigitte" a écrit :
>
> > Merci, j'ai des clauses from du type et plusieurs dans la même requête.
> > Est-ce possible d'utiliser toujours cette option :
> >
> > /***************************************************************************/
> > /* CLAUSE FROM 22
> > */
> > /***************************************************************************/
> > SET @Sql_From22 = ''
> > SET @Sql_From22 = @Sql_From22 + 'FROM T_Cotation AS C '
> > SET @Sql_From22 = @Sql_From22 + ' INNER JOIN TD_PayOff_Type AS PT ON
> > C.IdProduit = PT.Id '
> > SET @Sql_From22 = @Sql_From22 + ' INNER JOIN T_COTATION_PANIER AS P ON C.Id
> > = P.IdCotation '
> > SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_SousJacent As SJ ON
> > C.IdSousJacent = SJ.Id '
> > SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Client_Final As CF ON
> > C.IdClient = CF.Id '
> > SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Utilisateur As U ON C.IdUser =
> > U.Id '
> > SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN TD_SaleCenter As SC ON
> > CF.IdSaleCenter = SC.Id '
> > SET @Sql_From22 = @Sql_From22 + ' LEFT JOIN T_Cotation_Reponse AS CR ON
> > CR.IdCotation = C.Id AND CR.ID = (select max(id) from T_Cotation_Reponse
> > where IdCotation = C.Id) '
> >
> > Merci
> >
> > Brigitte
> >
> > "SQLpro [MVP]" a écrit :
> >
> > > Brigitte a écrit :
> > > > Bonjour,
> > > >
> > > > A quel niveau, faut-il mettre cette option?
> > >
> > >
> > > SELECT ...
> > > FROM ...
> > > OPTION (MAXDOP 1)
> > >
> > >
> > > A +
> > >
> > > >
> > > > Merci
> > > >
> > > > Brigitte
> > > >
> > > > "SQLpro [MVP]" a écrit :
> > > >
> > > >> Philippe T [MS] a écrit :
> > > >>> Bonjour,
> > > >>>
> > > >>> EXEC sp_configure 'max degree of parallelism', '1'
> > > >> Mieux vaut danc ce cas utiliser le tag OPTION (MAXDOP 1) dans la requête.
> > > >>
> > > >> A +
> > > >>
> > > >>
> > > >>
> > > >>> Cela supprime la paramllélisation sur plusieurs processeurs mais je ne sais
> > > >>> pas si c'est très conseillé car pour d'autres requêtes cela pourrait
> > > >>> s'avérer contre performant.
> > > >>>
> > > >>> ----------------------------------------------------------------------
> > > >>> Philippe TROTIN - Microsoft Service France
> > > >>>
> > > >>> "Brigitte" wrote in message
> > > >>> news:
> > > >>>> Bonsoir,
> > > >>>>
> > > >>>> J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
> > > >>>> Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
> > > >>>> Par contre, est-il possible d'optimiser ce temps en modifiant des
> > > >>>> paramètres
> > > >>>> à l'aide de sp_configure?
> > > >>>>
> > > >>>> Merci
> > > >>>>
> > > >>>> Bonne soirée
> > > >>>>
> > > >>>> Brigitte
> > > >>>
> > > >>
> > > >> --
> > > >> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> > > >> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> > > >> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> > > >> ********************* http://www.datasapiens.com ***********************
> > > >>
> > >
> > >
> > > --
> > > Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> > > Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> > > Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> > > ********************* http://www.datasapiens.com ***********************
> > >


Avatar
Brigitte
Merci

"SQLpro [MVP]" a écrit :

Brigitte a écrit :
> merci, comment activer l'affinity mask avec 75% proc.

C'est un masque binaire. Pour activer les proc 0 1 et 2 :

0^2 + 1^2 + 2^2 = 1 + 2 + 4 = 7

sp_configure 'affinity mask', '7'

A +

>
> Brigitte
>
> "Brigitte" a écrit :
>
>> Bonsoir,
>>
>> J'ai une requête qui s'exécute en 12 sec sur un serveur ayant 1 proc.
>> Par contre, la même requête s'exécute en 24 sur un serveur ayant 2 proc.
>> Par contre, est-il possible d'optimiser ce temps en modifiant des paramètres
>> à l'aide de sp_configure?
>>
>> Merci
>>
>> Bonne soirée
>>
>> Brigitte


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************



1 2