Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Community Manager

    Comparatif des performances de SQL Server sous Linux par rapport à Windows
    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
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Expert éminent
    Bravo, de l'humour et de l'information !
    Champagne ! comme chantait le chanteur qui pétillait !
    Merci.
    les règles du forum - mode d'emploi du forum
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    JE NE RÉPONDS PAS aux questions techniques par message privé.

  3. #3
    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
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  4. #4
    Expert éminent sénior
    Citation Envoyé par sevyc64 Voir le message
    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.

    Citation Envoyé par sevyc64 Voir le message
    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.

    ++

  5. #5
    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?

  6. #6
    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
    On ne jouit bien que de ce qu’on partage.

  7. #7
    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.
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  8. #8
    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.
    On ne jouit bien que de ce qu’on partage.

  9. #9
    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
    On ne jouit bien que de ce qu’on partage.

  10. #10
    Modérateur

    Citation Envoyé par dfiad77pro Voir le message
    Pourquoi ne pas refaire un test en désactivant Windows Defender?
    Parce qu'il est très difficile à désactiver. Un des rares moyens de le désactiver est d'installer un autre antivirus qui s'enregistre correctement en tant que tel dans le système.

    Citation Envoyé par StringBuilder Voir le message
    Windows Defender est activé, et à ça s'ajoute Trend Micro Office Scan
    Normalement si un autre antivirus est installé WD est automatiquement désactivé, même s'il reste en mémoire. Ensuite suivant les service activé dans l'autre logiciel, il peut rester l'antimalware en route.
    WD reste en mémoire même désactivé, parce que, si jamais l'autre antivirus venait à être désactivé ou a cessez de fonctionner, WD reprend la main automatiquement, normalement .
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  11. #11
    Membre expérimenté
    Citation Envoyé par sevyc64 Voir le message
    Parce qu'il est très difficile à désactiver. Un des rares moyens de le désactiver est d'installer un autre antivirus qui s'enregistre correctement en tant que tel dans le système.


    Normalement si un autre antivirus est installé WD est automatiquement désactivé, même s'il reste en mémoire. Ensuite suivant les service activé dans l'autre logiciel, il peut rester l'antimalware en route.
    WD reste en mémoire même désactivé, parce que, si jamais l'autre antivirus venait à être désactivé ou a cessez de fonctionner, WD reprend la main automatiquement, normalement .
    Ah, pourtant on peut facilement désactiver temporairement la protection en temps réel sur Windows 10 classique/pro, avec les droits admins biensur.

  12. #12
    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".

  13. #13
    Rédacteur/Modérateur

    En environnement virtuel, sur exploitation (= firewall, antivirus compris)...
    1. en test 1, MSSQL-2014 Std, 2 CPUs, 32 Go RAM dont 24 Go pour l'instance
    2. en production 1, MSSQL-2014 Std, 4 CPUs, 64 Go RAM dont 55 Go pour l'instance
    3. en test 2, MSSQL-2014 Ent, 4 CPUs, 132 Go RAM dont 120 Go pour l'instance
    4. en production 2, MSSQL-2014 Ent, 4 CPUs, 132 Go RAM dont 120 Go pour l'instance


    1ère salve
    1. 6 min
    2. 7 min 13
    3. 7 min 58
    4. 7 min 35


    2ème salve après troncature de la table
    1. 5 min 13
    2. 6 min 32
    3. 6 min 9
    4. 6 min 33


    3ème salve
    1. 5 min 33
    2. 7 min
    3. 6 min 14
    4. 6 min 33


    Mais j'ai un SAN dessous... donc des ES sur SSD, flash ou HDD... selon utilisations... difficile donc de tenir des théories sur les IO quand on ne maîtrise plus les techno sous-jacentes...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  14. #14
    Expert éminent
    Je viens de compléter mes tests.

    Voici les résultats avec 4 environnements :
    1 Notre serveur de DEV après migration de tous les disques sur une baie de disques SSD
    2 Notre serveur de DEV 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 qui a servi à faire le test d'hier (voir la vidéo plus haut)
    4 Mon portable PRO sur lequel j'ai relancé le test ce matin

    Les bonnes nouvelles :
    - Le serveur utilisé par SQL Pro est assez ancien. Ce qui explique pourquoi les 20 minutes contre les moins de 4 minutes sur mon PC perso (et les 5 minutes et demies sur mon portable !). J'aime bien avoir une explication
    - Après passage de disques magnétiques à SSD, notre serveur à 50 000 euros offre les mêmes performances qui mon PC à 1 500 euros complètement vétuste...
    - J'ai clairement identifié grâce à ce test que la grande marge de progression se situait au niveau des IO

    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 ?
    On ne jouit bien que de ce qu’on partage.

  15. #15
    Membre expert
    Citation Envoyé par sevyc64 Voir le message
    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.
    Oui ce qui permet de passer sur un full Linux pour faire du .Net, avec son site en Asp.net Core et Sql Server, le prix des licences Windows Server peuvent être un frein, et si en plus on ajoute une licence Sql Server ...
    En tout cas pour un particulier ou un indépendant c'est une bonne solution pour faire du .Net à moindre de coût si on part sur du Sql Server express quand on sait que sur un petit serveur le prix de la licence Windows Server peut doubler le prix.

  16. #16
    Expert éminent
    Express est porté sur Linux ?

    Il me semblait que seules les versions Entreprise (et Standard ?) l'étaient, non ?
    On ne jouit bien que de ce qu’on partage.

  17. #17
    Membre expert
    Citation Envoyé par StringBuilder Voir le message
    Express est porté sur Linux ?

    Il me semblait que seules les versions Entreprise (et Standard ?) l'étaient, non ?
    Il me semble que oui
    https://docs.microsoft.com/fr-fr/sql/linux/sql-server-linux-editions-and-components-2017

  18. #18
    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.

  19. #19
    Expert éminent sénior
    Express est porté sur Linux ?

    Il me semblait que seules les versions Entreprise (et Standard ?) l'étaient, non ?
    Express est disponible même sous Linux.

    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.
    SELinux ne joue pas le rôle d'antivirus. C'est un module du noyau qui gère les règles d'accès au système (fichiers / services etc ...).
    De ce que je peux voir chez les clients il n'y a jamais d'antivirus sur leurs serveurs Linux car les systèmes sont réputés plutôt fiables en terme d'accès, de tentative d'exploit etc ...
    Je vous laisse voir ce qu'un Red Hat conseille lorsqu'on parle d'antivirus ...

    ++

  20. #20
    Expert éminent
    Tiens, je viens de voir un truc qui m'étonne.

    Je ne maîtrise pas du tout les types de fichiers de Linux, mais j'imagine qu'il y a une notion de cluster comme avec FAT32 ou NTFS, non ?

    En effet, dans le document on compare Windows avec une taille de cluster de 64 Ko (recommandation Microsoft) alors que Linux est avec une taille d'allocation minimum de 512 octets.

    Après, je ne sais pas si Linux sait adapter automatiquement la taille de ses "clusters" en fonction de ce qu'il fait dedans, mais il on part du principe que c'est bien des cluster de 512 octets, ça veut dire qu'on peut faire jusqu'à 128 lectures "physiques" pour lire une page sous Linux là où avec Windows on garanti qu'il n'y en aura qu'une seule.


    Cela peut-il avoir un impact sur les performances ?
    On ne jouit bien que de ce qu’on partage.

###raw>template_hook.ano_emploi###