1 Techniques de stockage Oracle / MySQL Eric Boniface NFE113 Administration et
1 Techniques de stockage Oracle / MySQL Eric Boniface NFE113 Administration et configuration des bases de données - 2010 2 Oracle Le système de représentation physique assez riche Repose sur une terminologie qui porte à confusion Les termes de « représentation physique » et « représentation logique » pas employés dans le sens vu jusqu’à présent Pour des raisons de clarté, utilisation quand nécessaire de la terminologie d’Oracle pour rester cohérent avec celle déjà vue Un système Oracle = instance, stocke les données dans un ou plusieurs fichiers Ces fichiers entièrement attribués au SGBD 3 Oracle Divisés en blocs dont la taille peut varier de 1K à 8K Au sein d’un fichier des blocs consécutifs peuvent être regroupés pour former des extensions (extent) Ensemble d’extensions pour stocker un objets physiques (une table, un index) = un segment Possibilité de paramétrer, pour un ou plusieurs fichiers, le mode de stockage des données La taille des extensions Le nombre maximal d’extensions formant un segment Le pourcentage d’espace libre laissé dans les blocs Ces paramètres et les fichiers = tablespace 4 Oracle : fichiers et blocs Création d’une base de données attribuer au moins un fichier sur un disque Ce fichier = l’espace de stockage initial qui contiendra, au départ, le dictionnaire de données La taille de ce fichier Choisie par le DBA Dépend de l’organisation physique qui a été choisie Possibilité d’allouer un seul gros fichier et y placer toutes les données/les index Ou bien restreindre ce fichier initial au stockage du dictionnaire et ajouter d’autres fichiers, un pour les index, un pour les données, etc. 5 Oracle : fichiers et blocs Le deuxième type de solution est préférable, mais plus complexe Permet en plaçant les fichiers sur plusieurs disques, de répartir la charge des contrôleurs de disque Pratique courante – recommandée par Oracle : placer un fichier de données sur un disque, un fichier d’index sur un autre La répartition sur plusieurs disques permet aussi, grâce au paramétrage des tablespaces de régler finement l’utilisation de l’espace en fonction des informations – données ou index – qui y sont stockées 6 Oracle : fichiers et blocs Le bloc = la plus petite unité de stockage La taille d’un bloc peut être choisie au moment de l’initialisation d’une base, et correspond obligatoirement à un multiple de la taille des blocs du système d’exploitation Exemple : un bloc sous Linux occupe 1024 octets, et un bloc ORACLE occupe typiquement 4 096 ou 8 092 octets 7 Oracle : fichiers et blocs Structure d’un bloc, identique quel que soit le type d’information Cinq parties suivantes L’entête (header) = l’adresse du bloc et son type Le répertoire des tables = la liste des tables pour lesquelles des informations sont stockées dans le bloc Le répertoire des enreg. = les adresses des enreg. du bloc Un espace libre : pour faciliter l’insertion d’enregistrements, ou l’agrandissement des enregistrements du bloc (p. ex. un attribut à NULL auquel on donne une valeur par UPDATE) L’espace des données contient les enregistrements 8 Oracle : fichiers et blocs Les trois premières parties : espace de stockage pas directement dédié aux données = l’overhead Cet espace, environ 100 octets. Le reste permet de stocker les données des enregistrements. Les paramètres PCTFREE et PCTUSED La quantité d’espace libre laissée dans un bloc : paramètre PCTFREE, lors de la création d’une table ou d’un index Exemple 30% indique que les insertions se feront dans le bloc jusqu’à ce que 70% du bloc soient occupés, les 30% restant réservés aux agrandissements des enregistrements Une fois que cet espace disponible de 70% est rempli, ORACLE considère qu’aucune nouvelle insertion ne peut se faire dans ce bloc 9 Oracle : fichiers et blocs Des modifications (mise à NULL p. ex.) peuvent faire baisser le taux d’occupation du bloc Si ce taux < paramètre PCTUSED le bloc à nouveau disponible pour des insertions PCTFREE = le taux d’utilisation maximal au-delà duquel les insertions deviennent interdites PCTUSED = le taux d’utilisation minimal en deçà duquel ces insertions sont à nouveau possibles Les valeurs de ces paramètres dépendent de l’application, ou plus précisément des caractéristiques des données stockées dans une table particulière 10 Oracle : fichiers et blocs Une petite valeur pour PCTFREE les insertions remplissent plus complètement le bloc meilleure exploitation de l’espace disque Choix valable pour des données rarement modifiées Une valeur plus importante de PCTFREE plus de blocs pour les mêmes données, offre plus de flexibilité pour des mises à jour fréquentes Deux scénarios possibles pour PCTUSED et PCTFREE Dans le premier, PCTFREE=30%, PCTUSED=40% (PCTFREE+PCTUSED <= 100%) Les insertions ok jusqu’à ce que 70% du bloc soit occupé 11 Oracle : fichiers et blocs Le bloc retiré de la liste des blocs disponibles et seules des destructions / modifications peuvent affecter son contenu Si, après mises à jour, l’espace occupé tombe en dessous de 40% bloc disponible pour insertions Acceptation d’avoir beaucoup d’espace inoccupé, au pire 60% Avantage : coût de maintenance de la liste limité Second scénario, PCTFREE=10% (valeur par défaut) PCTUSED=80% Si bloc plein à 90%, plus d’insertions 12 Oracle : fichiers et blocs Mais reprennent dès que le taux d’occupation tombe sous 80% Bonne utilisation de l’espace, mais travail du SGBD plus important (et donc pénalisé) car gestion des blocs disponibles/indisponibles plus intensive De plus, en ne laissant que 10% de marge pour d’éventuelles extensions des enregistrements, risque de nécessité de chaîner les enregistrements sur plusieurs blocs 13 Oracle : enregistrements Suite de données stockées, à quelques variantes près, comme vu Exemple CHAR(n) = un tableau de n+1 octets Le premier octet indique la taille de la chaîne, qui doit donc être comprise entre 1 et 255 Les n octets suivants : les caractères de la chaîne, complétés par des blancs si la longueur de cette dernière est inférieure à la taille maximale VARCHAR(n) : seuls les octets utiles de la chaîne sont stockés. Cas où une mise à jour élargissant la chaîne entraîne une réorganisation du bloc 14 Oracle : enregistrements Chaque attribut précédé de la longueur de stockage Les NULL représentés par une longueur de 0 Cependant, si les n derniers attributs d’un enregistrement sont NULL une marque de fin d’enregistrement, ce qui permet d’économiser de l’espace Chaque enregistrement identifié par un ROWID,en trois parties 1. Le numéro du bloc au sein du fichier 2. Le numéro de l’enregistrement au sein du bloc 3. L’identifiant du fichier 15 Oracle : enregistrements Un enregistrement peut occuper plus d’un bloc, notamment s’il contient les attributs de type LONG chaînage vers un autre bloc Situation comparable à celle de l’agrandissement Migration : enregistrement déplacé en totalité dans un autre bloc, un pointeur dans le bloc d’origine pour ne pas modifier l’adresse de l’enregistrement (ROWID) ROWID peut être utilisée par des index, et une réorganisation totale serait trop coûteuse Migration et chaînage sont pénalisants pour les performances 16 Oracle : extension et segments Extension = suite contiguë de blocs En général, extension liée à un seul type de données Cette contiguïté = facteur essentiel d’efficacité de l’accès aux données car évite les déplacements des têtes de lecture, ainsi que le délai de rotation Nombre de blocs spécifié par l’administrateur Extensions de tailles importantes bonnes performances, mais si la table n’a que peu d’enreg inutile d’allouer une extension contenant des milliers de blocs Utilisation/Réorganisation plus difficiles si extensions de grande taille 17 Oracle : extension et segments Extensions = l’unité de stockage constituant les segments Par exemple si la taille des extensions = 50 blocs un segment = n extensions de 50 blocs chacune Quatre types de segments de données = enreg. des tables, 1 par table d’index = enreg. des index ; il y a un segment par index temporaires = utilisés pour des données pendant l’exécution des requêtes, par exemple pour les tris rollbacks = informations permettant d’effectuer une reprise sur panne ou l’annulation d’une transaction; il s’agit typiquement des données avant modification, dans une transaction qui n’a pas encore été validée 18 Oracle : extension et segments Une extension initiale est allouée à la création d’un segment De nouvelles extensions allouées dynamiquement au segment au fur et à mesure des insertions Pas de garantie de contiguïté Mais une fois affectée à un segment : commande explicite du DBA ou destruction de la table/de l’index, pour que cette extension redevienne libre Sur création d’une extension, pas uploads/Sante/ 5bis-oracle-mysql.pdf
Documents similaires
-
18
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 26, 2022
- Catégorie Health / Santé
- Langue French
- Taille du fichier 0.2178MB