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

  • 18
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Fev 26, 2022
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 0.2178MB