Cours Bases de données 2ème année IUT Cours 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours
Plan 1 Les clusters de table : définition rapide 2 Organisation générale d une base oracle les tablespaces Blocs, extensions et segments Segments Blocs Segments Rollback
Définition Définition Cluster = un ensemble de tables regroupées parce qu elles partagent une ou plusieurs colonnes (clé primaire et référence), et sont souvent utilisées ensemble dans des jointures Les lignes de plusieurs tables relatives à une même clé de clusters sont stockées dans le même bloc. favoriser les requêtes faisant intervenir ces tables ensemble. Les clés... Une clé de cluster = une ou plusieurs colonnes que les tables ont en commun la valeur de la clé n est stockée qu une fois par bloc de données
Organisation générale Architecture à deux niveaux Une BD ORACLE comporte deux niveaux : niveau logique, niveau physique Une base est identifiée dans le système global par un nom de base. Exemple CREATE DATABASE mabase
Structure physique Structure On trouve les données de gestion de la base et les données des utilisateurs dans des fichiers : fichiers de données (data files) ce qu on connaît, fichiers de reprise (redo log files) ce qui permet de reprendre en cas de problème, fichiers de contrôle (control files) pour tout surveiller,
Structure logique Structure Constituée des objets suivants database une base de données est stockée dans des zones de stockage : les tablespaces tablespace; segments; extensions (extents); blocs; objets du schéma (schema objects)
Structure logique Structure Les objets du schéma comprennent : les tables; les vues; les index; les clusters; les séquences; les procédures stockées; les fonctions; les paquetages (packages); les déclencheurs (triggers).
Les tablespaces Structure Une base de données est composée d unités logiques : les tablespaces; Pour chaque base, il y a au moins un tablespace d origine, appelé SYSTEM, qui contient le dictionnaire des données (toutes les informations sur la base) un tablespace peut être actif (online) ou désactivé (offline) Un tablespace correspond à un ou plusieurs fichiers physiques; une table ou ses index sont créés dans un tablespace, qui peut s étendre sur plusieurs fichiers physiques..
Les tablespaces : illustration Tablespace (un ou plusieurs fichiers de données) Table Table Index Index Index Index Index Index Index Table Fichiers de données structure physique associée à un seul tablespace Objets (stockés dans un tablespace éventuellement sur plusieurs fichiers
Les tablespaces : pour le système La taille de la BD et des tablespaces grandit en ajoutant des fichiers... Base de données Tablespace SYSTEM DATA1.ORA DATA2.ORA Un seul tablespace ALTER TABLESPACE system ADD DATAFILE DATA2.ORA
Les tablespaces : pour les utilisateurs Base de données Tablespace SYSTEM Tablespace USERS DATA1.ORA DATA2.ORA DATA3.ORA Deux tablespaces CREATE TABLESPACE users DATAFILE DATA3.ORA
Les tablespaces : pour les utilisateurs Qui ont besoin de plus en plus de place... Base de données Tablespace SYSTEM Tablespace USERS DATA1.ORA DATA2.ORA DATA3.ORA 20M 20M ALTER DATABASE DATAFILE DATA3.ORA AUTOEXTENT ON NEXT 20M MAXSIZE 1000M
Allocation dans les fichiers Trois niveaux de granularité La gestion des données dans les fichiers s effectue selon trois niveaux de granularité : le bloc, l extension : un certain nombre de blocs consécutifs alloués simultanément à un objet de schéma (tables, index,...) le segment : un ensemble d extensions allouées au même objet de schéma
Bloc, extension et segment Extension 28Kb Extension 84Kb Segment 11
Différents types de segments Les segments Plusieurs types de segments : les segments de données (data); les segments d index; les segments d annulation (rollback); les segments temporaires; le segment de démarrage (bootstrap), créé dans le (tablespace SYSTEM); les segments différés.
Un segment... Caractéristiques Un segment ne peut pas s étendre sur plusieurs tablespaces Un segment peut s étendre sur plusieurs fichiers physiques associés au même tablespace Chaque segment est formé d une ou plusieurs extensions (ensemble de blocs contigus). Le premier bloc (bloc en-tête) contient : les caractéristiques du segment, le répertoire des extensions du segment, le pointeur vers la chaîne de blocs pouvant contenir de nouvelles lignes (premier espace libre)
Un bloc... Caractéristiques Un bloc contient une zone commune (ou fixe) comportant : le numéro du bloc la date de création le type de segment auquel il appartient,... et une zone variable comportant : le répertoire des tables (uniquement en cas de cluster) : numéros des tables en cluster et valeur de la clé du cluster; le répertoire des lignes, avec pour chaque ligne, son adesse dans le bloc; des informations sur les transactions concurrentes sur le bloc
Un bloc... En tete Répertoire de table (en cluster) Répertoire de lignes au moins 20% Espace libre Lignes de données Le bloc autorise l insertion de lignes tant que l espace libre est d au moins 20% (PCTFREE) pour permettre la mise à jour des lignes existantes.
Un bloc... En tete Répertoire de table (en cluster) Répertoire de lignes au moins 61%% Espace libre Lignes de données Aucune nouvelle ligne ne pourra être insérée tant que l espace occupé ne sera pas tombé au-dessous de 40% (PCTUSED), pour ne pas se trouver trop vite en situation de crise.
Un bloc... En tete ligne Données des colonnes N Ligne Nb colonnes Clé cluster (si existe) ROWID des éventuelles lignes chainées Longueur colonne Valeur colonne En tete Répertoire de table (en clust Répertoire de lignes Espace libre Lignes de données
. A la création Allocation A la création d un objet de schéma, Oracle lui réserve une première extension (initial extent) vide au départ. Lorsque tous les blocs d une extension sont pleins, Orale alloue à l objet une nouvelle extension (next extent). L allocation indique différents paramètres : INITIAL : la taille du premier segment (en nb de blocs) NEXT : la taille de chaque segment supplémentaire PCTINCREASE : si 0, taille constante, sinonon augmante à chaque nouveau MINEXTENTS : nb min d extensions allouée à une table à sa création MAXEXTENTS : nb max d extensions allouée à une table à sa création
Les segments rollback Extension inactive, avec de la place T2 update insert update T1 insert update update insert update update insert E4 E5 E3 E6 E2 E1 Extensions actives sans place libre Tant qu il y a de la place, on remplit, et on change si nécessaire.
Les segments rollback T1 update insert update update insert T2 update insert update insert update E5 E6 Extension inactive, avec de la place E1 E4 E2 E3 Extensions actives sans place libre Tant qu il y a de la place, on remplit, et on change si nécessaire... en circulaire. Si besoin, on en ajoute un dans la boucle.