SQL Server stockage interne
-
Upload
david-barbarin -
Category
Technology
-
view
69 -
download
0
Transcript of SQL Server stockage interne
Edition 2012 – 10 et 11 décembre
Rejoignez la Communauté
Edition 2012 – 10 et 11 décembre
Sponsors Platinum
SQL SERVER : STOCKAGE INTERNE 11 décembre 2012
Edition 2012 – 10 et 11 décembre
SOMMAIREDavid Barbarin
~10 ans expérience SQL Server
Insentia SABlog : http://blog.developpez.com/mikedavem/Twitter : @mikedavem
Conseil et formationoArchitecture système et Bases de DonnéesoHaute disponibilitéoPerformance et optimisationoSécurité
Edition 2012 – 10 et 11 décembre
SOMMAIRE
Instant database file initialization et impact sur les fichiers de bases de données
Tables, allocations, pages, extensions, stockage des lignes de données
Edition 2012 – 10 et 11 décembre
Sponsors Platinum
INSTANT DATABASE FILE INITIALIZATION
Edition 2012 – 10 et 11 décembre
INSTANT DATABASE FILE INITIALIZATION
Fichiers initialisés par une opération de remplissage de 0 (zeroing filling operation) pour les opérations suivantes :
Création d’une base de données Expansion de fichiers Ajout de fichiers à une base de données
L’initialisation des fichiers peut prendre beaucoup de temps en fonction de la taille de fichier à initialiser et de la performance du stockage
Edition 2012 – 10 et 11 décembre
INSTANT DATABASE FILE INITIALIZATION
INSTANT DATABASE FILE INITIALIZATION est une fonctionnalité qui permet de s’affranchir de l’initialisation des fichiers (zeroing filling operation)
Concerne uniquement les fichiers de données. Les fichiers journaux ne sont pas concernés (by design SQL Server se sert de cette opération pour détecter la fin du journal lors d’un recovery)
Nécessite la mise en place de certains prérequis :
Privilège SE_MANAGE_VOLUME_NAME pour le compte de service SQL Server
Support de la fonction SetFileValidData() par le système d’exploitation
Le fichier n’est pas un fichier sparse Pas de chiffrement (TDE)
Edition 2012 – 10 et 11 décembre
DEMO
Edition 2012 – 10 et 11 décembre
Sponsors Platinum
TABLES, ALLOCATION, PAGES, EXTENT …
Edition 2012 – 10 et 11 décembre
TABLES ET ALLOCATION
Table / Index
Partition Partition
Heap / B-tree (Hobt)
Heap / B-tree (Hobt)
Allocation unit Allocation unit
IN-ROW
ROW OVERFL
OWLOB IN-
ROW
ROW OVERFL
OWLOB
sys.indexes
sys.partitions
sys.allocation_units
Edition 2012 – 10 et 11 décembre
DEMO
Edition 2012 – 10 et 11 décembre
PAGES
Une table ce n’est pas un tableau et des lignes du point de vue stockage !!!
Les lignes de données sont stockées dans des pages de 8Ko (8192 octets)
Plusieurs types de pages (pages de données, pages d’index, pages systèmes)
Edition 2012 – 10 et 11 décembre
PAGES
Header
CBA
Row A
Row B
Row C
96 octets
8096 octets
2 octets / ligne
Edition 2012 – 10 et 11 décembre
PAGES
Fonctions non documentées permettant de visualiser les pages
DBCC PAGE, DBCC IND (paramètres)
Outils relativement robuste mais attention quant à leur utilisation de ces outils en production !!
Edition 2012 – 10 et 11 décembre
PAGES
Pages systèmes
• Boot page : Stocke des informations critiques (page 9 fichier 1)
• PFS : Page Free Space
Byte map pour chaque page PFS intervall = 64MB Traque l’espace libre dans les pages + enregistrement
fantôme + page IAM ? + page mixte ? Page allouée ? L’espace libre est utilisée uniquement pour les tables heap
+ LOB + varchar(max) + varbinary(max) + XML
Edition 2012 – 10 et 11 décembre
PAGES
Pages systèmes
GAM : Global Allocation Map
Détermine si une extent est disponible pour une allocation Bitmap pour chaque extent GAM intervalle = 4GB
SGAM : Shared Global Allocation Map
Détermine si une extent est miexte and possède au moins une page non allouée disponible
Bitmap pour chaque extent GAM intervalle = 4GB
Edition 2012 – 10 et 11 décembre
PAGES
Pages systèmes
DCM : Differential Change Map
Traque les extents modifiées depuis la dernière sauvegarde complète
GAM intervalle = 4GB
• BCM : Bulk Change Map
Traque les extents modifiées par une opération BULK GAM intervalle = 4GB
Edition 2012 – 10 et 11 décembre
PAGES
Pages systèmes
IAM : Index Allocation Map
Permet de connaître quelles extents sont allouées pour une entité spécifique
GAM intervalle = 4GB Pages IAM sont liées entre elles (chaine IAM)
Edition 2012 – 10 et 11 décembre
EXTENSIONS
Une extension est un regroupement de 8 pages de données contiguës
Les extensions rendent les allocations systèmes beaucoup plus efficaces
L’allocation des extensions est réalisée grâce aux pages systèmes PFS, SGAM et GAM (bitmap par extension vs bitmap par page)
8 premières pages alloués page par page de n’importe quelle extension dans le groupe de fichiers (extension mixte)
Une fois que ces 8 premières pages sont allouées, on bascule vers des extensions dédiées (extentions uniformes)
Fonction non documentée pour visualiser les extensions
DBCC EXTENTINFO
Edition 2012 – 10 et 11 décembre
DEMO
Edition 2012 – 10 et 11 décembre
STOCKAGE D’UNE LIGNE DE DONNÉES
Format de stockage FixedVar
1 octets 1 octets 2 octets N octets 2 octetsCeiling
(N cols / 8)
octets
2 octets(2 x nb
var cols)
octets
N octets
Partie fixe Partie variable
Status bit A
Status bit B
Longueur portion fixe
Données fixe
Nb cols
NULL bitmap
Nb var cols
OffsetDonnées variables
Edition 2012 – 10 et 11 décembre
DEMO
Edition 2012 – 10 et 11 décembre
Merci à nos SponsorsRencontrez les dans l’espace partenaires
Sponsors Platinum
Sponsors Gold
Sponsors Silver
Edition 2012 – 10 et 11 décembre
Continuez l’expérience onlineRejoignez la Communauté