11
2.2 Structures de stockage
96 octets et d’un corps contenant des lignes de table ou des structures d’index. Une
page peut stocker 8 060 octets de données (8192 – 96 – un peu de place laissée par
sécurité).
La page est l’unité minimale de lecture/écriture de SQL Server. En d’autres termes, lorsque le moteur de stockage écrit ou lit sur le disque, il ne peut écrire ou lire
moins qu’une page. L’impact sur les performances est simple : plus vos lignes sont
compactes (peu de colonnes, avec un type de données bien choisi), plus elles pourront résider dans la même page, et moins le nombre nécessaire de pages pour conserver la table sera élevé.
Toutes les informations d’entrées-sorties retournées par le moteur de stockage
(notamment dans le cas de récupérations de statistiques IO via la commande SET
STATISTICS IO ON de la session 1 ) sont exprimées en pages. Cette commande de
session permet l’affichage de statistiques d’entrées/sorties après chaque instruction SQL. Elle est très utile pour juger du coût d’une requête. Nous en détaillons
l’utilisation à la section 5.1.
Donc, SQL Server lit une page, pas moins, et une page contient une ou plusieurs
lignes, mais une ligne doit résider tout entière dans la page. Cela signifie que la
somme de la taille nécessaire au stockage de chaque colonne ne peut dépasser
8 060 octets, sauf exceptions qui suivent. Que se passe-t-il si la taille d’une ligne
dépasse légèrement la moitié de la taille de la page ? Tout à fait comme lorsque vous
essayez de placer dans une boîte deux objets qui n’y tiennent pas ensemble : vous
devez acheter une seconde boîte, et y placer un objet dans chacune, laissant une partie de l’espace de la boîte inutilisée. C’est ce qu’on appelle la fragmentation interne,
et cela peut donc constituer une augmentation de taille de stockage non négligeable
sur les tables volumineuses, ainsi que diminuer les performances de lectures de données.
Les extensions permettent de gérer l’allocation de l’espace du fichier. Elles contiennent 8 pages contiguës, et sont donc d’une taille de 64 Ko. Pour ne pas laisser
trop d’espace inutilisé, SQL Server partage les petites tables dans une même extension, appelée « extension mixte ». Lorsque la taille de la table dépasse les 8 pages, de
nouvelles extensions (extensions uniformes) sont allouées uniquement à cette table.
Un désordre des pages dans les extensions entraîne une fragmentation externe.
Comme un ordre particulier des lignes dans les pages, et des pages dans les extensions n’ont de sens que pour une table ordonnée par un index clustered, nous traiterons des problématiques de fragmentation dans le chapitre consacré aux index.
Un fichier de données étant composé de pages, et seulement de pages, elles ne
stockent pas uniquement le contenu de tables et d’index, bien que ce soit de très loin
leur utilisation la plus fréquente. Quelques autres types existent, que vous pourrez
1. Session est le terme officiel pour une connexion utilisateur.
Précédent

- 23/334

Suivant