Pools de mémoire tampon basés sur des blocs pour améliorer la lecture anticipée séquentielle

La lecture anticipée des pages à partir du disque est coûteuse en raison de la surcharge d'E-S. Le débit peut être considérablement amélioré si le traitement chevauche les E-S.

La plupart des plateformes fournissent des primitives hautes performances qui lisent les pages contiguës du disque dans des parties non contiguës de la mémoire. Ces primitives sont généralement appelées lecture dispersée ou E-S vectorielles. Sur certaines plateformes, les performances de ces primitives ne peuvent pas rivaliser avec l'exécution d'E-S dans des blocs de grande taille.

Par défaut, les pools de mémoire tampon sont basés sur des pages, ce qui signifie que les pages contiguës sur le disque sont prélues dans des pages non contiguës en mémoire. La lecture anticipée séquentielle peut être améliorée si des pages contiguës peuvent être lues depuis le disque vers des pages contiguës dans un pool de mémoire tampon.

Vous pouvez créer des pools de mémoire tampon basés sur des blocs à cette fin. Un pool de mémoire tampon basé sur des blocs se compose à la fois d'une zone de page et d'une zone de bloc. La zone de page est requise pour les charges de travail de préextraction non séquentielles. La zone de bloc est constituée de blocs ; chaque bloc contient un nombre spécifié de pages contiguës, appelé taille de bloc.

L'utilisation optimale d'un pool de mémoire tampon basé sur des blocs dépend de la taille de bloc spécifiée. La taille de bloc correspond à la granularité à laquelle les serveurs d'E-S effectuant des opérations de lecture anticipée séquentielle envisagent d'effectuer des opérations d'E-S par bloc. L'étendue correspond à la granularité à laquelle les espaces table sont segmentés entre les conteneurs. Etant donné que plusieurs espaces table avec des tailles d'extension différentes peuvent être liés à un pool de mémoire tampon défini avec la même taille de bloc, tenez compte de la façon dont la taille d'extension et la taille de bloc interagiront pour une utilisation efficace de la mémoire du pool de mémoire tampon. La mémoire du pool de mémoire tampon peut être gaspillée si:
  • La taille d'extension, qui détermine la taille de la demande de lecture anticipée, est inférieure à la taille de bloc spécifiée pour le pool de mémoire tampon
  • Certaines pages de la demande de préextraction sont déjà présentes dans la zone de page du pool de mémoire tampon

Le serveur d'E-S autorise certaines pages perdues dans chaque bloc de pool de mémoire tampon, mais si un trop grand nombre de pages est perdu, le serveur d'E-S effectue une lecture anticipée non basée sur les blocs dans la zone de page du pool de mémoire tampon, ce qui entraîne des performances sous-optimales.

Pour des performances optimales, liez des espaces table de la même taille d'extension à un pool de mémoire tampon dont la taille de bloc est égale à la taille d'extension d'espace table. De bonnes performances peuvent être obtenues si la taille d'extension est supérieure à la taille de bloc, mais pas si la taille d'extension est inférieure à la taille de bloc.

Pour créer des pools de mémoire tampon basés sur des blocs, utilisez l'instruction CREATE BUFFERPOOL ou ALTER BUFFERPOOL.

Remarque: Les pools de mémoire tampon basés sur des blocs sont destinés à la lecture anticipée séquentielle. Si vos applications n'utilisent pas la lecture anticipée séquentielle, la zone de bloc du pool de mémoire tampon est perdue.