24
Edition 2012 – 10 et 11 décembre Rejoignez la Communauté

SQL Server stockage interne

Embed Size (px)

Citation preview

Page 1: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Rejoignez la Communauté

Page 2: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Sponsors Platinum

SQL SERVER : STOCKAGE INTERNE 11 décembre 2012

Page 3: SQL Server stockage interne

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é

Page 4: SQL Server stockage interne

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

Page 5: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Sponsors Platinum

INSTANT DATABASE FILE INITIALIZATION

Page 6: SQL Server stockage interne

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

Page 7: SQL Server stockage interne

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)

Page 8: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

DEMO

Page 9: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Sponsors Platinum

TABLES, ALLOCATION, PAGES, EXTENT …

Page 10: SQL Server stockage interne

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

Page 11: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

DEMO

Page 12: SQL Server stockage interne

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)

Page 13: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

PAGES

Header

CBA

Row A

Row B

Row C

96 octets

8096 octets

2 octets / ligne

Page 14: SQL Server stockage interne

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 !!

Page 15: SQL Server stockage interne

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

Page 16: SQL Server stockage interne

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

Page 17: SQL Server stockage interne

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

Page 18: SQL Server stockage interne

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)

Page 19: SQL Server stockage interne

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

Page 20: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

DEMO

Page 21: SQL Server stockage interne

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

Page 22: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

DEMO

Page 23: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Merci à nos SponsorsRencontrez les dans l’espace partenaires

Sponsors Platinum

Sponsors Gold

Sponsors Silver

Page 24: SQL Server stockage interne

Edition 2012 – 10 et 11 décembre

Continuez l’expérience onlineRejoignez la Communauté