12
Chapitre 2. Architecture de SQL Server
voir apparaître de temps en temps, principalement dans les résultats de requêtes sur
les vues de gestion dynamique. Vous trouvez leur description dans les BOL, sous
l’entrée Pages and Extents. Ce sont principalement des pages de pointage et d’information sur les structures : SPF, IAM, GAM, SGAM. Elles couvrent un certain nombre de pages ou d’étendues (cette quantité étant nommée un intervalle). Les pages
SPF couvrent 8 088 pages (environ 64 Mo), les pages GAM, SGAM et IAM couvrent 64 000 extensions (environ 4 Go). Sans entrer dans les détails 1 , voici leur
signification :
• SPF (Page Free Space) : contient un octet d’information par page référencée,
indiquant notamment si la page est libre ou allouée, et quel est son pourcentage d’espace libre.
• GAM (Global Allocation Map) : contient un bit par extension, qui indique si
elle est libre (1) ou déjà allouée (0).
• SGAM (Shared Global Allocation Map) : contient un bit par extension, qui
indique si elle est une extension mixte qui a au moins une page libre (1), ou si
elle est une extension uniforme, ou qui n’a pas de page libre (0).
• IAM (Index Allocation Map) : indique quelles pages appartiennent à un objet
dans un intervalle GAM.
La combinaison des informations contenues dans les pages de GAM, SGAM,
IAM et SPF permet à SQL Server de gérer au mieux l’allocation des pages et extensions dans le fichier de données.
Affichage du contenu des pages
La structure détaillée des pages et du stockage des index et des tables à l’intérieur
n’est en général pas déterminant pour les performances. Nous reviendrons sur
certains aspects importants au fil de l’ouvrage. Sachez toutefois que vous pouvez
inspecter le contenu des pages à l’aide d’une commande non documentée : DBCC
PAGE. Elle est utile pour se rendre compte de la façon dont travaille le moteur de
stockage, et pour expérimenter certains aspects du fonctionnement de SQL Server.
Nous utiliserons cette commande dans le livre, notamment au chapitre 6. La syntaxe
de DBCC PAGE est la suivante :
DBCC PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
où filenum est le numéro de fichier et pagenum le numéro de page, que vous trouvez dans d’autres commandes en général non documentées, qui vous retourne un
pointeur vers une page dans le format #:#. Par exemple 1:543 veut dire la page 543
dans le fichier 1. Printopt permet d’indiquer le détail d’informations à retourner :
0 – en-tête de la page.
1 – contenu détaillé incluant la table d’offset (row offset array, ou offset table,
l’adresse des lignes dans la page).
1. Disponibles par exemple sur le blog de Paul Randal : http://blogs.msdn.com/sqlserverstorageengine/
Précédent

- 24/334

Suivant