Bonjour,
Depuis plusieurs mois, j'ai des performances sur des serveurs SQL Server à mon boulot qui ne me conviennent pas.
En effet, sur une base identique, j'arrive à avoir des performances jusqu'à 10 fois meilleures sur mon PC perso qui n'est ni haut de gamme ni neuf. C'est juste un "bon" PC, avec cependant quelques pièces de récupération qui sont clairement de moindre qualité.
Suite au comparatif de SQLPro entre SQL Server sous Windows et sous Linux, j'ai décidé de rejouer le benchmark sur différents environements :
- Mon PC perso
- Mon portable Pro (clairement désuet, la seule chose qui le sauve, c'est le remplacement de son disque d'origine par un SSD)
- Un des serveurs du boulot incriminés
Voici donc le comparatif initial, qui contient entre autres, le script du bench :
https://sqlpro.developpez.com/tutori...windows-linux/
J'ai retenu ce bench en particulier, car il teste avant tout les IO.
Et de manière très étrange, en pleine charge, mon serveur a un encéphalogramme plat : aucune charge mémoire, CPU et disques en train de se tourner les pouces.
Vu qu'on est en environnement virtualisé, et que j'ai de gros doutes quant à la bonne gestion de nos baies de disque, je soupçonne clairement les IO d'être à l'origine du problème.
Une chose qui me fait douter entre autres, c'est que lorsque je fais un backup de la base de donnés, ce dernier se fait à une vitesse de 300 à 400 Mo/s.
Donc des baies de disque très véloces, qui fonctionnent bien.
Mais si je fais un "select into" d'une table volumineuse dans une autre, je tombe à une consommation des disques entre 20 et 30 Mo/s, data, log et tempdb compris !
Voici les résultats du bench avec mes 4 environnements :
1 Notre serveur après migration de tous les disques sur une baie de disques SSD
2 Notre serveur alors qu'une partie des disques étaient encore sur une baie de disques magnétiques (je n'ai malheureusement pas le détail desquels)
3 Mon PC perso
4 Mon portable Pro
Voici le détail du résultat de la requête de fin du bench détaillant les IO.
Je m'attendais naïvement a avoir à peu de chose les mêmes nombres dans les "number of read/write" et surtout "number of bytes read/write", et n'avoir des différence que dans les temps d'attente...
Et pourtant, j'ai des chiffres drastiquement différents d'un environement à l'autre (avec parfois un facteur de plus de 1/100 !)
J'ai vraiment besoin d'aide pour comprendre... Car quand je vois le nombre d'octets "lus pour rien" sur notre serveur, je me dis que les performances pourraient être drastiquement supérieures, non ?
Partager