Hello tout le monde,
J'ai quelques soucis à visualiser comment s'articulent les objets suivants : Buffer, buffer header, data block, LRU, cache buffer chain...
Les articles ou la doc d'Oracle ne sont pas toujours clairs, surtout que plusieurs personnes confondent buffer et buffer header.
Voici ce que j'ai compris : merci de me dire si je me trompe.
Database Buffer Cache : un ensemble d'objets appelés Buffers, situé dans la SGA. C'est comparable à un parking.
Buffer : un emplacement réservé dans le Database Buffer Cache où Oracle va copier un data block depuis le disque dur. C'est comparable à une place de parking et la voiture représente le data block.
Buffer Header : équivalent pour un buffer du data block header pour un data block. MAIS, à la différence du data block header qui fait partie du data block, le buffer header est détaché du buffer et réside dans la Shared Pool et non pas dans le Database Buffer Cache. Un buffer header contient un pointeur vers un buffer et pas de data block.
LRU : liste de buffers headers et non pas de buffers ni de data blocks. Dans la LRU se trouvent les buffers headers des buffers gérant les data blocks accédés dernièrement par l'application.
Cache Buffer Chain : liste chaînée de buffers comme son nom l'indique (et non pas de buffers headers). Le database buffer cache est composé de milliers de Cache Buffer Chain. Quand Oracle recherche si un data block est déjà en mémoire, il parcourt un Cache Buffer Chain précis : celui-ci est identifié à partir d'une fonction de hash appliquée sur le DBA (Data Block Address) du bloc de données recherché.
Partager