Alignement de partitions pour amélioration des performances de MS-SQL Server pa

Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin Date de publication : 20 février 2009 Dernière mise à jour : Tests et mesures permettant de déterminer l'avantage à aligner les partitions pour un environnement Microsoft SQL Server. ------ Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin - 2 - Copyright 2009 - mikedavem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Droits de diffusion permanents accordés à developpez LLC. http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/ I - Introduction..............................................................................................................................................................3 II - Disque dur : quelques concepts............................................................................................................................ 3 III - Partitionnement de disque et 1er secteur............................................................................................................ 4 IV - Raid - stripping size et chunck.............................................................................................................................4 V - Problématique de l'alignement des partitions........................................................................................................4 V-A - 1er exemple..................................................................................................................................................4 V-B - 2ème exemple.............................................................................................................................................. 5 VI - Les utilitaires de partitionnement et alignement...................................................................................................6 VII - Tests et contrôle du gain de performance obtenu.............................................................................................. 7 VII-A - Environnement du test................................................................................................................................8 VII-B - Résultat des tests.......................................................................................................................................8 VII-B-1 - Lectures et écritures aléatoires avec une taille de bloc de 8Ko........................................................ 8 VII-B-2 - Lectures et écritures séquentielles avec une taille de bloc allant de 8ko à 1024Ko.......................... 9 VIII - Conclusion.......................................................................................................................................................... 9 IX - Sources.................................................................................................................................................................9 IX-A - Webographie................................................................................................................................................9 IX-B - Bibliographie................................................................................................................................................ 9 X - Remerciements....................................................................................................................................................10 Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin - 3 - Copyright 2009 - mikedavem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Droits de diffusion permanents accordés à developpez LLC. http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/ I - Introduction En matière de SGBDR les opérations les plus coûteuses sont celles réalisées par les accès physiques aux disques. Le fractionnement et la structuration des emplacements physiques des disques est d'une importance capitale en terme de performance et peut diviser les temps d'accès aux données par trois. Voici quelques explications sur cette problématique et la façon d' y remédier. Imaginez que vous êtes bibliothécaire et qu'une partie de votre tâche consiste à ranger des livres en les classant. Aujourd'hui vous devez ranger 2 collections de livres dans une partie de la bibliothèque. Une collection, une fois rangée, remplit la totalité de l'étagère de votre bibliothèque. Vous les rangez donc sur leurs étagères respectives. Si vous devez récupérer une collection entière de livres, il est facile pour vous de le faire : il suffit de repérer l'étagère concernée et de prendre les livres. Maintenant, si votre directeur tient absolument à ranger ses livres au début de cette 1ère étagère les collections de livres qui étaient parfaitement rangés se voient maintenant décalées et dispersées sur 2 étagères à la fois car ceux-ci, rappelons-le, prennent la place d'une étagère entière. Dans ce cas, que ce soit pour les ranger ou les récupérer, il vous faudra évidemment plus de travail. Remplacez les collections de livres par les données sur vos disques et les livres décalés suite à la demande du directeur par un décalage causé par le système d'exploitation et vous obtiendrez la problématique d'alignement des partitions et des problèmes de performances d'entrées / sorties engendrés. II - Disque dur : quelques concepts Commençons par aborder certains concepts techniques concernant les disques durs, sans pour autant entrer dans le détail, l'article ne visant pas l'exhaustivité. Un disque dur est une mémoire de masse magnétique composée d'un ou plusieurs plateaux. Chaque plateau est composé de pistes. Les pistes situées à un même rayon forment un cylindre. Chaque piste est délimitée en secteurs ou blocs qui contiendront les données. Un secteur fait 512 octets. Un disque dur possède également une ou plusieurs têtes de lecture pour pouvoir lire et écrire les données. Il y a autant de têtes que de surfaces à lire (en fonction des différents plateaux). Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin - 4 - Copyright 2009 - mikedavem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Droits de diffusion permanents accordés à developpez LLC. http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/ III - Partitionnement de disque et 1er secteur Qu'est ce qu'une partition ? Quelle en est son utilité ? Une partition accueille un système de fichiers et possède accessoirement un secteur d'amorçage ainsi que la table des partitions (MFT) nécessaire à retrouver vos données. Cette table se situe sur le 1er secteur du disque qui contient également toutes les informations " constructeurs " relatives au disque lui-même. Il s'agit donc du secteur le plus important car il est utilisé par le BIOS pour la reconnaissance du disque. IV - Raid - stripping size et chunck La plupart des serveurs de bases de données reposent aujourd'hui sur des systèmes à tolérance de panne permettant une haute disponibilité et des performances accrues à base de technologie RAID. Nous terminerons par ce point avant d'aborder l'alignement de partition à proprement parler. La 1ère étape, lorsque configurer un RAID, est de créer votre volume RAID. Vous devrez tôt ou tard choisir une taille pour les " strippings blocks ". Mais qu'est-ce que cela signifie ? Prenons le cas d'un raid 0. Lors de son fonctionnement, le serveur écrit ou lit sur deux disques en même temps en séparant les données en blocs. Un bloc sur 2 se retrouvera sur un disque et les autres sur le deuxième. Le paramètre " stripping block " permet de régler la taille de ces blocs. Toutes les tailles conviennent-elles ? Évidemment non ! A moins de posséder une carte professionnelle coûteuse, le découpage des blocs sera assuré par la CPU. Si l'on paramètre une taille trop petite la CPU se trouve surchargée par des opérations de découpage de blocs et le serveur verra ses performances diminuer. Il existe pour chaque contrôleur RAID une taille optimale de bloc appelée " CHUNCK ". Les valeurs de CHUNK courantes varient entre 16Ko et 128Ko. Pour SQL Server, la taille recommandée est de 64Ko. V - Problématique de l'alignement des partitions Attardons-nous à présent sur l'alignement des partitions proprement dit. Pourquoi avoir parlé de disque dur, de partitions et de taille de bande (stripe size) ? Lorsque vous créez une partition sur le système d'exploitation, en l'occurrence Windows (Attention, ceci ne concerne pas Windows Server 2008), par défaut celui-ci se réserve les 63 premiers secteurs du disque dur. Ces 63 premiers secteurs peuvent contenir certaines informations comme le Master Boot Record et la table d'allocations des partitions, comme nous l'avons vu précédemment. Le système d'exploitation écrit ensuite les 512 premiers octets sur la 1ère piste et écrit le reste sur la 2ème piste. Par conséquent une simple écriture ou une simple lecture requiert un double accès ! Nous avons identifié ainsi notre problème, nos livres rangés sur deux étagères￿. L'alignement des partitions permet de résoudre ce problème. Comment ? En réservant non pas les 63 mais 64 premiers secteurs du disque. Cette taille peut changer en fonction de la taille d'allocations des clusters de partition. Nous y reviendrons par la suite. V-A - 1er exemple Prenons une valeur de strippe de 64 Ko. Le système d'exploitation alloue une taille de cluster de 4Ko par défaut. Chaque cluster contient donc 8 secteurs de 512 octets et chaque largeur de bande du raid (stripe Unit) contient 16 clusters. L'image ci-dessous illustre nos propos. Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin - 5 - Copyright 2009 - mikedavem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Droits de diffusion permanents accordés à developpez LLC. http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/ Nous voyons bien que pour lire le 8ème cluster il y aura 2 entrées / sorties qui seront effectués pour une partition non alignée contre 1 seule pour une partition alignée. Pour arriver à ce résultat il suffit d'allouer un secteur supplémentaire au début du disque. V-B - 2ème exemple Arrêtons-nous sur un nouvel exemple. Cette fois prenons une taille d'allocation de cluster de 64Ko (recommandée pour les fichiers de données, de transactions et tempdb de SQL Server). Alignement de partitions pour amélioration des performances de MS-SQL Server par David Barbarin - 6 - Copyright 2009 - mikedavem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon uploads/Litterature/ alignement-de-partitions-pour-amelioration-des-performances-de-ms-sql-server.pdf

  • 27
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager