Developpez.com - Rubrique SQL-Server

Le Club des Développeurs et IT Pro

Comparatif des performances de SQL Server sous Linux par rapport à Windows

Par Frédéric Brouard

Le 2018-04-06 19:08:04, par Community Management, Community Manager
Chers membres du club,

Frédéric Brouard (alias SQLPro) nous propose un comparatif des performances de SQL Server sous Linux par rapport à Windows.


Le but de cet article est de comparer les performances de Microsoft SQL Server 2017 sous Linux par rapport à Windows. Il a été élaboré sur des machines physiques strictement identiques pour ôter tout biais lié à l'utilisation de machines virtuelles.
Bonne lecture et n'hésitez pas à apporter vos commentaires
  Discussion forum
30 commentaires
  • Bravo, de l'humour et de l'information !
    Champagne ! comme chantait le chanteur qui pétillait !
    Merci.
  • mikedavem
    Expert éminent sénior
    Envoyé par sevyc64
    Ok, SQLServer, un poil plus rapide sur Linux que sur Windows Server moyennant les remarques faites au chapitre 7. Donc en analyse rapide on peut dire que Linux est équivalent à Windows Server
    C'était bien la cible de Microsoft sur le sujet: proposer un moteur multi-plateforme de bases de données à performances équivalentes
    Je pense que l'objectif a été atteint et on verra ce que cela donnera dans le futur.

    Envoyé par sevyc64
    Donc, sauf à ce que ce soit un point vraiment critique, la vitesse de l'ensemble ne sera pas un critère de choix de l'un ou l'autre des systèmes.
    Tout à fait d'accord sur ce point. SQL Server sur Linux est à mon avis d'abord destiné à des clients ayant une philosophie forte dans le monde open source et Linux. J'ai par exemple un cas client qui est passé d'un environnement Oracle / Linux à un SQL Server / Linux d'une part parce qu'il voulait quitter Oracle et d'autre part parce que son éditeur d'application proposait une alternative SQL Server. Le fait d'avoir eu le choix de l'OS a fini de le convaincre de passer sur SQL Server car c'est un client qui ne jure que par du Linux.

    ++
  • sevyc64
    Modérateur
    Ok, SQLServer, un poil plus rapide sur Linux que sur Windows Server moyennant les remarques faites au chapitre 7. Donc en analyse rapide on peut dire que Linux est équivalent à Windows Server.

    Donc, sauf à ce que ce soit un point vraiment critique, la vitesse de l'ensemble ne sera pas un critère de choix de l'un ou l'autre des systèmes.

    Mais comme dit, à confirmer par des tests plus approfondis.

    Ce qui sera marrant aussi (à moins que le test ait déjà été fait) ça serait de voir la différence, sur Windows Server, avec divers antivirus pro à la place de Windows Defender
  • Aurelien.Regat-Barrel
    Expert éminent sénior
    Au niveau de la différence de performance Windows vs Linux, au delà des perfs respectives de chaque OS (je pense au filesystem en particulier), il faut aussi avoir en tête que ce n'est pas le même compilo utilisé sur chaque plateforme. Une bonne partie du gain CPU doit s'expliquer par ce "détail".
  • Tetsumaki
    Membre à l'essai
    Salut,

    Merci pour ce comparatif très intéressant, avec de l'assez bon matos qui plus est.

    Je tiens cependant à réagir à ceci :

    Windows Server est installé par défaut avec l'antivirus maison « Windows Defender ». Linux n'a aucun antivirus installé ni activé par défaut (ne serait-ce pas une faille de sécurité ?).
    Ce n'est absolument pas une faille de sécurité, j'invite à se renseigner sur SELinux qui est activé par défaut. Il ne s'agit pas d'un antivirus et il n'est pas du tout nécessaire d'en installer un, je dirais même, il ne faut absolument pas en installer un.
  • dfiad77pro
    Membre expérimenté
    Pourquoi ne pas refaire un test en désactivant Windows Defender?
    Je sais c'est pas bien
    mais au moins on aura des résultats plus probants?
  • StringBuilder
    Expert éminent
    Bonjour,

    J'ai des gros soucis de performances sur un serveur de base de données à mon travail.

    J'ai donc profité de ce test pour réutiliser le script de benchmark, et comparer une base en local sur mon PC avec le serveur de mon boulot et pouvoir dire à notre équipe système :

    "Normalement c'est censé durer environ 20 minutes sur un serveur 'moderne' sans être une foudre de guerre, X minute sur mon PC à la maison tout naze fait de brics et de brocs, et Y sur notre serveur pourtant 10 fois plus puissant sur le papier que celui du benchmark".

    Et là, je suis perplexe.

    Le script qui dure 20 minutes dans le test sur un serveur "vierge", sans utilisation du PC en // sans anti-virus autre que Windows Defender, sur un OS server et du matériel à priori neuf (et qui pus est des volumes en RAID 10 de disques à 10 ktrm).

    Moi j'ai un PC vieillissant :

    CPU : Intel Core i5-4750 @3.20Ghz (4 cœurs)
    Disques :
    - C (install OS + SQL Server + fichiers de log + tempdb : disque Samsung SSD de 120 Go)
    - H la base de données : disque dure de récupération d'un vieux portable LENOVO de 500 Go

    Durant le test, j'ai ScreenPresso qui bouffe une part non négligeable du CPU et du disque.
    J'ai aussi mon enceinte Sonos qui pompe réseau + disque (bon, pas beaucoup, je l'accorde) ainsi que OneDrive qui est en train de synchroniser comme un porc des documents
    Windows Defender est activé, et à ça s'ajoute Trend Micro Office Scan et le fait que je suis sous Windows 10 Familial et j'utilise SQL Server 2016 :

    Microsoft SQL Server 2016 (SP1-GDR) (KB4019089) - 13.0.4206.0 (X64) Jul 6 2017 07:55:03 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Home 6.3 <X64> (Build 16299: )

    Pourtant, le script ne met que 3 minutes et 44 secondes à tourner !

    Comment cela se fait-il ?

    Du coup je suis un peu embêté de dire que la config du boulot est plus lente que mon PC... car si un serveur neuf (d'entrée de gamme, certes) est plus lent que mon PC perso que j'estime comme tout merdique sans que je ne sache l'expliquer je n'ai aucune idée des conclusions que je peux tirer du test !

    Vidéo : https://youtu.be/6bqe1DZ4ZS0
  • Pierre Louis Chevalier
    Expert éminent sénior
    Et tu es comment sur la mémoire vive ? Microsoft SQL Server demande un minimum de mémoire vie pour fonctionner correctement, et si tu en à plus c’est mieux avec le cache.
  • StringBuilder
    Expert éminent
    On le voit dans la vidéo : 16 Go installés, 6 Go utilisés.

    Mais le serveur du Benchmark ayant 32 go et moins de services actifs, j'imagine qu'il a encore plus de mémoire disponible.

    Et dans tous les cas, on génère au final 8 Go de données, donc pas besoin de bien plus de 8 Go pour charger l'intégralité des données en cache.
  • StringBuilder
    Expert éminent
    J'ai lancé le test sur le serveur du boulot et c'est clairement plus lent.

    Même version de SQL Server (2016 Developper)

    Windows 2016 Server

    Virtualisé sous Porxmox

    Serveur dédié à SQL Server, une instance. 8 Go de mémoire (ça pêche peut-être un peu à ce niveau).

    Disques hébergés sur une baie de SSD en RAID 5.

    Au bout de 2 minutes 40 j'en était à seulement 2 Go de données générées.

    Donc c'est près de 5 fois plus lent que chez moi... mais ça reste deux fois plus rapide que le benchmark de SQLPro !

    Je comprends rien