IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

MS SQL Server Discussion :

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


Sujet :

MS SQL Server

  1. #21
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    794
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 794
    Points : 987
    Points
    987
    Par défaut
    Oui tu as forcément des cluster sur un disque magnétique, sur SSD non enfin ce sont des cellules enfin bref et le systeme de mba etc. est le même ce sont des standards

  2. #22
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Hello,

    Citation Envoyé par StringBuilder Voir le message
    Tiens, je viens de voir un truc qui m'étonne.
    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.
    Je pense qu'il faut comparer ce qui est comparable ici. Les 512 octets correspondent en fait à une taille de secteur disque et 64KB correspondent à une taille d'unité d'allocation (qui correspond à la taille de cluster) au niveau FS et qui couvrent N secteurs disques (dans le cas Windows 64KB = 128 secteurs de disque). Sur les disques modernes on parle souvent de taille de secteurs à 4KB qui permettent de fiabiliser la détection d'erreurs principalement.

    Citation Envoyé par StringBuilder Voir le message
    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.
    Que ce soit Windows ou Linux cela ne change pas grand car on parle de secteurs physiques de disques au final. Sur linux au niveau partition on va plutôt parler de taille de block (juste un changement de vocabulaire) qui correspond par défaut à 4KB et on peut monter jusqu'à 64KB. Cependant il faut juste savoir que la seule taille de page système au niveau supportée pour le moment est 4KB (si on décide de monter le FS en question). Il suffit de voir le résultat de la commande

    Après des différences existent au niveau des algorithmes de placement / vérification des block / allocation de blocks différés etc ... sous Linux et qui sont reconnus pour être meilleurs que pour NTFS au niveau de la performance.

  3. #23
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Cela ne change rien au fait que SQL Server travaille avec des pages de 64 Ko, et que Microsoft recommande d'utiliser une taille de cluster de 64 Ko pour stocker les fichiers de données.

    En effet, si je modifie un octet dans une page, SQL Server va demander au système de mettre à jour toute la page.
    Donc les 64 Ko.

    Si j'ai une taille de cluster de 4 Ko, je risque :
    - D'avoir des pages fragmentées réparties dans jusqu'à 16 blocs différents
    - D'avoir des lectures/écritures concurrentes qui viennent interrompre la mise à jour des 16 blocs, et ainsi prolonger inutilement la durée de la modification

    Sur un disque magnétique en tout cas, la différence de performances est flagrante.

    Je me pose simplement la question avec un disque SSD : a priori la fragmentation ne va pas poser de souci majeur. Mais le faire de faire 16 écritures "physiques" au lieu de 1 seule par page, à mon avis ça augmente le risque d'avoir des lectures/écritures qui se concurrencent inutilement.

    Que Linux gère mieux ou moins bien les accès disques n'est pas le fond du problème : si le bench travaille avec des cluster de moins de 64 Ko, on est clairement dans des conditions potentiellement dégradées (d'autant que le bench se fait avec des disques magnétiques, donc très sensibles à la fragmentation).
    On ne jouit bien que de ce qu’on partage.

  4. #24
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Cela ne change rien au fait que SQL Server travaille avec des pages de 64 Ko, et que Microsoft recommande d'utiliser une taille de cluster de 64 Ko pour stocker les fichiers de données.

    En effet, si je modifie un octet dans une page, SQL Server va demander au système de mettre à jour toute la page.
    Oui
    Donc les 64 Ko.
    Non, ça c'est la taille de l'extent... La page fait bien 8 Ko. Mais tu ne met jamais un seul octet à jour... En effet, si tu as activé le CHECKSUM (recommandé) alors il y aura recalcul de la somme de contrôle ce qui change d'autres octets. Si tu as mis en place le versionnement via le mode d'isolation snapshot, tu aura modification du tag de version pour ce slot de ligne, si l'octet mis à jour augmente la taile d'une données dimensionnée en VAR... il y aura modification de la taille dans le tableau des longueurs...

    Si j'ai une taille de cluster de 4 Ko, je risque :
    - D'avoir des pages fragmentées réparties dans jusqu'à 16 blocs différents
    - D'avoir des lectures/écritures concurrentes qui viennent interrompre la mise à jour des 16 blocs, et ainsi prolonger inutilement la durée de la modification
    Les extents sont des blocs de 8 pages TOUJOURS contiguës. Si le cluster fait 4 Ko, l'extent sera créé sur 16 cluster de 4 ko contigües. Il n'y a jamais de fragmentation physique ni des pages, ni des extents...

    Sur un disque magnétique en tout cas, la différence de performances est flagrante.

    Je me pose simplement la question avec un disque SSD : a priori la fragmentation ne va pas poser de souci majeur. Mais le faire de faire 16 écritures "physiques" au lieu de 1 seule par page, à mon avis ça augmente le risque d'avoir des lectures/écritures qui se concurrencent inutilement.

    Que Linux gère mieux ou moins bien les accès disques n'est pas le fond du problème : si le bench travaille avec des cluster de moins de 64 Ko, on est clairement dans des conditions potentiellement dégradées (d'autant que le bench se fait avec des disques magnétiques, donc très sensibles à la fragmentation).

    Sur un disque SSD, dans certains cas, mieux vaut la fragmentation !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #25
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Cela ne change rien au fait que SQL Server travaille avec des pages de 64 Ko, et que Microsoft recommande d'utiliser une taille de cluster de 64 Ko pour stocker les fichiers de données.
    Microsoft ne recommande rien de tel sur Linux (le coup du cluster NTFS à 64KB sur Windows)

    Citation Envoyé par StringBuilder Voir le message
    En effet, si je modifie un octet dans une page, SQL Server va demander au système de mettre à jour toute la page.
    Donc les 64 Ko.
    SQL Server ne modifiera que la page en question donc 8KB sur les 64KB de l'extension où elle est stockée.

    Citation Envoyé par StringBuilder Voir le message
    Si j'ai une taille de cluster de 4 Ko, je risque :
    - D'avoir des pages fragmentées réparties dans jusqu'à 16 blocs différents

    Le coup de la fragmentation est beaucoup plus valable avec NTFS sur Windows que d'un FS sous Linux comme EXT4 ou XFS par exemple.

    Citation Envoyé par StringBuilder Voir le message
    - D'avoir des lectures/écritures concurrentes qui viennent interrompre la mise à jour des 16 blocs, et ainsi prolonger inutilement la durée de la modification
    Sur un disque magnétique en tout cas, la différence de performances est flagrante.
    La lecture / écriture des pages se fait toujours en mémoire et pas sur disque. Lors d'une écriture SQL Server modifie des pages de 8KB (à noter que la taille d'une page en mémoire est de 4KB sur Windows également à moins d'utiliser les Large Pages) et va écriture de manière asynchrone ces pages de 8K rassemblées dans des blocs contigus pour optimiser les écritures séquentielles (les fameux I/O vectorisées avec les méthodes Scatter/Gather). Donc s'il y a concurrence d'accès ca sera au niveau mémoire pas au niveau disque.

    Citation Envoyé par StringBuilder Voir le message
    Que Linux gère mieux ou moins bien les accès disques n'est pas le fond du problème : si le bench travaille avec des cluster de moins de 64 Ko, on est clairement dans des conditions potentiellement dégradées (d'autant que le bench se fait avec des disques magnétiques, donc très sensibles à la fragmentation).
    Il suffit d'aller voir les différents bench qui existent sur internet avec différentes tailles de blocs. NTFS n'arrive jamais devant ...

    ++

  6. #26
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Non, ça c'est la taille de l'extent... La page fait bien 8 Ko.
    J'avoue que je suis complètement perdu
    Va falloir que je révise un peu ces histoires de pages et extent !

    Citation Envoyé par mikedavem Voir le message
    Il suffit d'aller voir les différents bench qui existent sur internet avec différentes tailles de blocs. NTFS n'arrive jamais devant...
    Ca j'ai jamais dis le contraire : j'ai juste pensé que le bench ne se faisait pas dans les conditions les plus favorables sous Linux. Visiblement j'étais dans le faux.
    Après, Linux ou Windows plus rapide/plus lent, c'est autre chose.
    Juste que je pensais que d'un côté on chargeait une brouette de sable avec une pelle et de l'autre avec une paire de baquettes chinoises. Apparemment non.
    On ne jouit bien que de ce qu’on partage.

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 8
    Points : 7
    Points
    7
    Par défaut choix du FS linux
    Bonjour,
    je ne comprend pas le choix du FS EXT4 et pas un truc plus sympa genre ZFS ... qui me parait plus puissant et plus souple.

    Stéphane

  8. #28
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je dirais pour cette raison :

    https://docs.microsoft.com/fr-fr/sql...ql-server-2017
    Quels systèmes de fichiers Linux SQL Server peut-il utiliser comme fichiers de données ?

    SQL Server sur Linux prend en charge ext4 et XFS. Prise en charge d’autres systèmes de fichiers est ajouté en fonction des besoins à l’avenir.
    On ne jouit bien que de ce qu’on partage.

  9. #29
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je pense que cela est surtout du aux recommandations des distros Linux pour les bases de données.
    SLE / RHEL recommandent d'utiliser XFS pour les bases de données (meilleurs performance IO).

    ++

  10. #30
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    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
    Merci pour ce retour qui m'intrigue aussi.

    Avant tout il manquerait quelques éléments pour mieux appréhender le problème


    Ce n'est pas que les mesures nous éclaireront vraiment sur le fait qu'il y ait plus ou moins d'activité disque mais ça évitera de supputer dans le vague.
    De même il est IMPORTANT de valider que les instances soient effectivement configurées de la même manière.

    Ce que je relève est :
    • la forte variabilité des lecture (quantité et volume) alors qu'il n'y pas de stress mémoire attendu.
    • La faible variabilité des écritures

    je partirais sur une analyse différentielle de l'évolution des compteurs mémoire pendant (un peu avant et un peu après le test c'est mieux )
    voir ici : https://solutioncenter.apexsql.com/t...sure-counters/

    Comme ça on dirait que les pages non dirty ont été recyclées prématurément.
    Le savoir est une nourriture qui exige des efforts.

  11. #31
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Il serait je pense intéressant de refaire le test avec un Windows en mode Core. Ca pourrait peut-être faire des gains en faveur de Windows.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/08/2017, 11h01
  2. SQL server sous windows server 2003(VMWARE)
    Par brahimthebig dans le forum Virtualisation
    Réponses: 4
    Dernier message: 06/05/2011, 14h21
  3. Réponses: 1
    Dernier message: 29/12/2009, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo