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
SOMMAIRE
David Barbarin
~10 ans expérience SQL Server
 Insentia SA
Blog : http://blog.d...
Edition 2012 – 10 et 11 décembre
SOMMAIRE
 Instant database file initialization et impact sur les fichiers de bases
de do...
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 rempliss...
Edition 2012 – 10 et 11 décembre
INSTANT DATABASE FILE INITIALIZATION
 INSTANT DATABASE FILE INITIALIZATION est une fonct...
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...
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 !!!
 Le...
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 IN...
Edition 2012 – 10 et 11 décembre
PAGES
 Pages systèmes
• Boot page : Stocke des informations critiques (page 9 fichier 1)...
Edition 2012 – 10 et 11 décembre
PAGES
 Pages systèmes
 GAM : Global Allocation Map
 Détermine si une extent est dispon...
Edition 2012 – 10 et 11 décembre
PAGES
 Pages systèmes
 DCM : Differential Change Map
 Traque les extents modifiées dep...
Edition 2012 – 10 et 11 décembre
PAGES
 Pages systèmes
 IAM : Index Allocation Map
 Permet de connaître quelles extents...
Edition 2012 – 10 et 11 décembre
EXTENSIONS
 Une extension est un regroupement de 8 pages de données contiguës
 Les exte...
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 ...
Edition 2012 – 10 et 11 décembre
DEMO
Edition 2012 – 10 et 11 décembre
Merci à nos Sponsors
Rencontrez les dans l’espace partenaires
Sponsors Platinum
Sponsors ...
Edition 2012 – 10 et 11 décembre
Continuez l’expérience online
Rejoignez la Communauté
Prochain SlideShare
Chargement dans…5
×

SQL Server stockage interne

301 vues

Publié le

SQL Server et stockage interne

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
301
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Les lignes de données ne sont pas stockées classés Seules les offsets le sont pour un index cluster (heap pas de classement)

    Une ligne de données ne peut pas excéder 8060 octets. Dans le cas contraire certaines données de colonnes peuvent être automatiquement déplacés dans d’autre pages (LOB, VARCHAR etc …) avec un pointeur de 16 bytes ou 24 bytes en fonction du cas.
  • Lorsqu’une extent uniforme est allouée la première fois, seule la première page est utilisée. Le reste des pages sont utilisées par la suite lors des insertions de données
  • Status bit A contient une bitmap qui indique les propriétés d’une ligne

    Bit 0 : information de version
    Bits 1 à 3 : 0  primary record, 1  forwarding record, 2 forwared stub, 3  index record, 4  blob fragment, 5 ghost index record, 6  ghost data record, 7  ghost version record
    Bit 4 : NULL bitmap existe. Avec SQL Server 2008 toujours présent même si données non null
    Bit 5 : Données variables existent
    Bit 6 : Row versionning existe
    Bit 7 : Non utilisé

    Status bit B :
    1 bit est utilisé ici pour indiquer qu’il existe un enregistrement fantôme forwarded
  • SQL Server stockage interne

    1. 1. Edition 2012 – 10 et 11 décembre Rejoignez la Communauté
    2. 2. Edition 2012 – 10 et 11 décembre Sponsors Platinum SQL SERVER : STOCKAGE INTERNE 11 décembre 2012
    3. 3. Edition 2012 – 10 et 11 décembre SOMMAIRE David Barbarin ~10 ans expérience SQL Server  Insentia SA Blog : http://blog.developpez.com/mikedavem/ Twitter : @mikedavem Conseil et formation oArchitecture système et Bases de Données oHaute disponibilité oPerformance et optimisation oSécurité
    4. 4. 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
    5. 5. Edition 2012 – 10 et 11 décembre Sponsors Platinum INSTANT DATABASE FILE INITIALIZATION
    6. 6. 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
    7. 7. 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)
    8. 8. Edition 2012 – 10 et 11 décembre DEMO
    9. 9. Edition 2012 – 10 et 11 décembre Sponsors Platinum TABLES, ALLOCATION, PAGES, EXTENT …
    10. 10. 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 OW LOB IN- ROW ROW OVERFL OW LOB sys.indexes sys.partitions sys.allocation_units
    11. 11. Edition 2012 – 10 et 11 décembre DEMO
    12. 12. 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)
    13. 13. Edition 2012 – 10 et 11 décembre PAGES Header CBA Row A Row B Row C 96 octets 8096 octets 2 octets / ligne
    14. 14. 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 !!
    15. 15. 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
    16. 16. 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
    17. 17. 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
    18. 18. 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)
    19. 19. 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
    20. 20. Edition 2012 – 10 et 11 décembre DEMO
    21. 21. 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 octets Ceiling (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 Offset Données variables
    22. 22. Edition 2012 – 10 et 11 décembre DEMO
    23. 23. Edition 2012 – 10 et 11 décembre Merci à nos Sponsors Rencontrez les dans l’espace partenaires Sponsors Platinum Sponsors Gold Sponsors Silver
    24. 24. Edition 2012 – 10 et 11 décembre Continuez l’expérience online Rejoignez la Communauté

    ×