Vous êtes sur la page 1sur 10

Alignement de partitions pour amlioration des performances de MS-SQL Server

par David Barbarin


Date de publication : 20 fvrier 2009 Dernire mise jour :

Tests et mesures permettant de dterminer l'avantage aligner les partitions pour un environnement Microsoft SQL Server. ------

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

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 - Problmatique de l'alignement des partitions........................................................................................................4 V-A - 1er exemple.................................................................................................................................................. 4 V-B - 2me exemple.............................................................................................................................................. 5 VI - Les utilitaires de partitionnement et alignement...................................................................................................6 VII - Tests et contrle du gain de performance obtenu.............................................................................................. 7 VII-A - Environnement du test................................................................................................................................8 VII-B - Rsultat des tests....................................................................................................................................... 8 VII-B-1 - Lectures et critures alatoires avec une taille de bloc de 8Ko........................................................ 8 VII-B-2 - Lectures et critures squentielles 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

-2Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

I - Introduction
En matire de SGBDR les oprations les plus coteuses sont celles ralises par les accs 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'accs aux donnes par trois. Voici quelques explications sur cette problmatique et la faon d' y remdier. Imaginez que vous tes bibliothcaire et qu'une partie de votre tche consiste ranger des livres en les classant. Aujourd'hui vous devez ranger 2 collections de livres dans une partie de la bibliothque. Une collection, une fois range, remplit la totalit de l'tagre de votre bibliothque. Vous les rangez donc sur leurs tagres respectives. Si vous devez rcuprer une collection entire de livres, il est facile pour vous de le faire : il suffit de reprer l'tagre concerne et de prendre les livres. Maintenant, si votre directeur tient absolument ranger ses livres au dbut de cette 1re tagre les collections de livres qui taient parfaitement rangs se voient maintenant dcales et disperses sur 2 tagres la fois car ceux-ci, rappelons-le, prennent la place d'une tagre entire. Dans ce cas, que ce soit pour les ranger ou les rcuprer, il vous faudra videmment plus de travail. Remplacez les collections de livres par les donnes sur vos disques et les livres dcals suite la demande du directeur par un dcalage caus par le systme d'exploitation et vous obtiendrez la problmatique d'alignement des partitions et des problmes de performances d'entres / sorties engendrs.

II - Disque dur : quelques concepts


Commenons par aborder certains concepts techniques concernant les disques durs, sans pour autant entrer dans le dtail, l'article ne visant pas l'exhaustivit.

Un disque dur est une mmoire de masse magntique compose d'un ou plusieurs plateaux. Chaque plateau est compos de pistes. Les pistes situes un mme rayon forment un cylindre. Chaque piste est dlimite en secteurs ou blocs qui contiendront les donnes. Un secteur fait 512 octets. Un disque dur possde galement une ou plusieurs ttes de lecture pour pouvoir lire et crire les donnes. Il y a autant de ttes que de surfaces lire (en fonction des diffrents plateaux).

-3Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

III - Partitionnement de disque et 1er secteur


Qu'est ce qu'une partition ? Quelle en est son utilit ? Une partition accueille un systme de fichiers et possde accessoirement un secteur d'amorage ainsi que la table des partitions (MFT) ncessaire retrouver vos donnes. Cette table se situe sur le 1er secteur du disque qui contient galement toutes les informations " constructeurs " relatives au disque lui-mme. 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 donnes reposent aujourd'hui sur des systmes tolrance 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 1re tape, lorsque configurer un RAID, est de crer votre volume RAID. Vous devrez tt 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 mme temps en sparant les donnes en blocs. Un bloc sur 2 se retrouvera sur un disque et les autres sur le deuxime. Le paramtre " stripping block " permet de rgler la taille de ces blocs. Toutes les tailles conviennent-elles ? videmment non ! A moins de possder une carte professionnelle coteuse, le dcoupage des blocs sera assur par la CPU. Si l'on paramtre une taille trop petite la CPU se trouve surcharge par des oprations de dcoupage de blocs et le serveur verra ses performances diminuer. Il existe pour chaque contrleur RAID une taille optimale de bloc appele " CHUNCK ". Les valeurs de CHUNK courantes varient entre 16Ko et 128Ko. Pour SQL Server, la taille recommande est de 64Ko.

V - Problmatique de l'alignement des partitions


Attardons-nous prsent sur l'alignement des partitions proprement dit. Pourquoi avoir parl de disque dur, de partitions et de taille de bande (stripe size) ? Lorsque vous crez une partition sur le systme d'exploitation, en l'occurrence Windows (Attention, ceci ne concerne pas Windows Server 2008), par dfaut celui-ci se rserve 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 prcdemment. Le systme d'exploitation crit ensuite les 512 premiers octets sur la 1re piste et crit le reste sur la 2me piste. Par consquent une simple criture ou une simple lecture requiert un double accs ! Nous avons identifi ainsi notre problme, nos livres rangs sur deux tagres. L'alignement des partitions permet de rsoudre ce problme. Comment ? En rservant 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 systme d'exploitation alloue une taille de cluster de 4Ko par dfaut. 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.

-4Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

Nous voyons bien que pour lire le 8me cluster il y aura 2 entres / sorties qui seront effectus pour une partition non aligne contre 1 seule pour une partition aligne. Pour arriver ce rsultat il suffit d'allouer un secteur supplmentaire au dbut du disque.

V-B - 2me exemple


Arrtons-nous sur un nouvel exemple. Cette fois prenons une taille d'allocation de cluster de 64Ko (recommande pour les fichiers de donnes, de transactions et tempdb de SQL Server).

-5Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

Dans ce 2me cas nous observons galement les avantages d'aligner correctement les partitions en rservant cette fois-ci les 128 premiers secteurs soit 128 x 512 = 64Ko. Comme vous pouvez le constater, la taille d'alignement des partitions se fait en fonction de la taille d'allocation des clusters lorsque vous partitionnez vos disques.

VI - Les utilitaires de partitionnement et alignement


De nombreux utilitaires existent pour crer des partitions sur Windows. J'voquerai simplement quelques utilitaires " natifs " Windows qui nous permettront d'arriver au but recherch, savoirl'alignement des partitions ! diskmgmt.msc : la console de management de Windows permet non pas de procder l'alignement des partitions mais de faire de l'allocation de cluster. Msinfo32 : cet utilitaire Windows permet de voir l'alignement des partitions (offset) mais ne permet pas de partitionner ou de faire de l'alignement. Diskpar : cet utilitaire en ligne de commande Windows permet de visualiser et de faire de l'alignement de partitions. Diskpart : cet autre utilitaire en ligne de commande Windows permet galement de faire la mme chose que diskpar.

Nous prendrons pour notre exemple " diskpart ".


DISKPART > List disk DISKPART > Select disk 3 DISKPART > create partition primary align=64 DISKPART > assign letter=G DISKPART >Exit C:> format /fs:ntfs /A:64K /V:"DiskSql" /Q

G:

Dans l'exemple ci-dessus, nous avons cr une partition primaire sur le disque 3 avec un dcalage ou offset de 64Ko. Nous avons ensuite rserv la lettre G et format notre partition en NTFS avec une taille de cluster 64Ko.
-6Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

Visualisons prsent l'offset cr. Pour cela nous n'utiliserons pas diskpart car celui-ci se rvle imprcis la lecture de l'offset qui s'affiche en Ko. Pour rappel, Windows alloue les 63 premiers secteurs du disque par dfaut. Les calculs suivants permettent de vrifier nos propos: Par dfaut : 63 * 512 octects = 32256 octets = 31.5 Ko Avec alignement : 64 * 512 octets = 32768 octects = 32 Ko

Diskpart dans les 2 cas affichera 32 Ko ! Soyez donc prudent la lecture de l'offset avec cet utilitaire. Nous prendrons wmic, autre utilitaire fourni par Windows permettant de visualiser l'offset de la partition avec plus de prcision :
C :> wmic partition get BlockSize, StartingOffset, Name, Index BlockSize 512 512 512 Index 0 0 0 Name Disque n 0, partition n 0 Disque n 1, partition n 0 Disque n 2, partition n 0 StartingOffset 32256 32256 65536

Nous voyons donc la partition cre prcdemment ainsi que l'offset de 65536 octets soit 64Ko. Notez au passage le dsalignement des disques n0 et n1 avec un offset de 32256 octets par dfaut soit 31.5Ko et 63 secteurs et non 32Ko et 64 secteurs !

VII - Tests et contrle du gain de performance obtenu


Aprs avoir align et partitionn correctement nos disques, voyons les rsultats en termes de performance. Pour cela nous utiliserons SQLIO, utilitaire fourni par Microsoft permettant de mesurer la capacit en terme d'entres / sorties pour une configuration donne. Les tests se baseront sur diffrents scenarii rencontrs dans SQL Server dans un environnement de type OLTP. Nous aurons les caractristiques suivantes : Les lectures des fichiers de donnes sont constantes par nature et alatoires (8Ko) Les critures dans les fichiers donnes se font essentiellement lors des oprations de CHECKPOINT et sont alatoires. (8Ko) Les oprations de type ROLLBACK utilisent un mode de lecture alatoire sur les fichiers de transactions (8Ko) Les lectures des fichiers de transactions sont galement squentiels (La taille des secteurs pouvant aller jusqu' 120 KB) Les critures dans les fichiers de transactions sont squentielles et de diverses tailles (tout dpend de la nature de la charge) Les oprations de rindexation de tables, d'insertion en blocs et de vrification de bases de donnes utilisent un mode de lecture et d'criture squentiel (64Ko 256Ko) Les backups utilisent un mode d'criture squentiel avec une taille de 1024Ko.

Nous testerons pour chaque partition (non aligne et aligne) : Pour les I/O de alatoires : Lecture et criture avec une taille de bloc 8Ko Pour les I/O squentielles : Lecture et criture avec les tailles de bloc de 8, 64, 128, 256 et 1024Ko

-7Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

VII-A - Environnement du test


Les tests sont raliss sur un portable ayant les caractristiques suivantes : Intel Core Duo 2,10 Ghz 3 Go de RAM 2 disques durs partitionns respectivement avec alignement (offset 64Ko) et sans alignement. La taille des blocs est fixe 64Ko.

VII-B - Rsultat des tests VII-B-1 - Lectures et critures alatoires avec une taille de bloc de 8Ko.

Les tests montrent une diffrence notable pour lectures (21%) mais pas de grande diffrence en criture (1,5%). Ce test peut tre difficilement interprtable. Pourquoi n'observe t'on pas tellement de diffrence en criture ? Nous avons une taille de cluster de 8Ko, une largeur de bande de 64Ko et des critures alatoires. La probabilit d'crire dans la zone critique, c'est--dire celle qui divisera un bloc en 2 parties reste faible, que ce soit sur une partition aligne ou pas.

-8Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

VII-B-2 - Lectures et critures squentielles avec une taille de bloc allant de 8ko 1024Ko

Les tests montrent une diffrence notable aussi bien en criture (13%) qu'en lecture (18%). Sur des lectures et critures squentielles la probabilit d'crire sur la zone critique est beaucoup plus leve dans ce cas. L'alignement des partitions y joue tout son rle.

VIII - Conclusion
L'alignement des partitions reste une des nombreuses techniques d'optimisations existantes telles que la mise en place de technologies RAID, l'ajout de disques rapides, de caches disques, de bus de donnes plus rapides etc. Corrle un paramtrage adquat de taille de clusters et de largeur de bande (stripe unit size) aux niveaux de vos configurations RAID, vous devriez tirer parti des avantages d'une technique assez simple mettre en uvre avant mme d'avoir install votre serveur SQL. Bon alignement !!

IX - Sources IX-A - Webographie


Technologies raids wikipdia Disque dur wikipdia Microsoft Best practices I/O configuration

IX-B - Bibliographie
Outils de partitionnement

-9Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Alignement de partitions pour amlioration des performances de MS-SQL Server par David Barbarin

X - Remerciements
Je remercie SQLPro et Fadace pour la relecture attentive de cet article.

- 10 Copyright 2009 - mikedavem. Aucune reproduction, mme 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 intrets. Droits de diffusion permanents accords developpez LLC.
http://mikedavem.developpez.com/sqlserver/tutoriels/architecture/

Vous aimerez peut-être aussi