Notions de base de la mémoire cache du tampon de base de données dans Oracle 12c

Oracle 12c de buffer cache de base de données

Sommaire

est généralement la plus grande partie de la SGA. Il dispose de données qui provient des fichiers sur le disque. Étant donné que l'accès aux données à partir du disque est plus lent que la mémoire, le Le seul but de la base de données tampon cache est de mettre en cache les données en mémoire pour un accès plus rapide.

Le cache de tampon de base de données peut contenir des données de tous les types d'objets:

  • Tableaux

  • Index

  • Vues matérialisées

  • Système de données

Dans la phrase buffer cache de base de données, le terme tampon se réfère à des blocs de base de données. UN bloc de base de données est le montant minimum de stockage Oracle lit ou écrit. Tous les segments de stockage qui contiennent des données se composent de blocs. Lorsque vous demandez des données à partir du disque, au minimum Oracle lit un bloc.

Même si vous demandez une seule ligne, le nombre de lignes dans la même table sont susceptibles d'être récupérées. La même chose vaut si vous demandez une colonne dans une rangée. Oracle lit l'ensemble du bloc, ce qui a probablement beaucoup de lignes, et toutes les colonnes de cette ligne.

Il est possible de penser que si votre table des départements n'a que dix lignes, la chose entière peut être lu dans la mémoire même si vous demandant le nom d'un seul département.

Etat de cache tampon dans Oracle 12c

La cache tampon contrôle ce blocs obtiennent de rester en fonction de l'espace disponible et l'état de bloc (similaire à la façon dont la piscine commune décide de ce qui arrive à rester SQL). Le cache du tampon utilise sa propre version de l'algorithme LRU.




Un bloc dans le cache du tampon peut être dans l'un des trois états:

  • Gratuit: Non utilisé actuellement pour rien

  • Épinglé: Actuellement en cours d'accès

  • Sale: Block a été modifiée mais pas encore écrites sur le disque

Blocs libres

Idéalement, les blocs libres sont disponibles chaque fois que vous en avez besoin. Cependant, qui est probablement pas le cas, sauf si votre base de données est si petite que le tout peut tenir dans la mémoire.

L'algorithme LRU fonctionne un peu différemment dans le cache de mémoire tampon qu'elle ne le fait dans la piscine partagée. Elle obtient chaque bloc et puis fois combien de temps il a été depuis qu'il a été consulté. Par exemple, un bloc obtient un point chaque fois qu'il est touché.

Plus le point, moins le bloc sera balayé de la mémoire. Cependant, il doit être consulté fréquemment ou le score diminue. Un bloc doit travailler dur pour rester dans la mémoire si la concurrence pour les ressources de mémoire est élevée.

Donner chaque bloc un score et le temps empêche ce type de situation ne se reproduise: Un bloc est accessible fortement à la fin du mois pour les rapports. Son score est supérieur à tout autre bloc dans le système. Ce bloc est jamais de nouveau accessible.

Il est assis là gaspiller mémoire jusqu'à ce que la base de données est redémarré ou un autre bloc enfin scores assez de points pour battre dehors. Les composants temps, il très rapidement après avoir âges plus y accéder.

Blocs épinglés

Un bloc actuellement consultée est un bloc épinglé. Le bloc est verrouillé (ou épinglé) dans le cache de mémoire tampon ne peut donc pas être âgé de la cache tampon alors que le processus Oracle (représentant souvent un utilisateur) y accède.

Blocs sales

Un bloc modifié est un bloc sale. Pour vous assurer que vos modifications sont conservées dans les arrêts de base de données, ces blocs sales doivent être rédigés à partir du cache de mémoire tampon sur le disque. Les noms de base de données des blocs sales dans une liste sale ou file d'attente d'écriture.

Vous pourriez penser que chaque fois qu'un bloc est modifié, il doit être écrit sur le disque afin de minimiser les données perdues. Cela ne veut pas le cas - pas même quand il ya un commettre (lorsque vous enregistrez vos modifications en permanence)! Plusieurs structures aident à prévenir les données perdues.

En outre, Oracle a un problème de jeu. Les performances du système serait ramper si vous avez écrit blocs sur disque pour chaque modification. Pour lutter contre cela, Oracle joue les chances que la base de données est peu probable à l'échec et écrit des blocs sur le disque que dans les grands groupes.

Soyez rassuré, il est même pas un risque contre la perte de données. Oracle devient performances de la base de données en ce moment au détriment possible d'une prise de récupération plus longue plus tard. Parce que les échecs sur des systèmes bien gérées se produisent rarement, il est un moyen pas cher pour gagner un peu de performance. Cependant, il est pas comme si Oracle laisse blocs sales partout sans nettoyer après lui-même.

Bloquer écriture déclenche dans Oracle 12c

Qu'est ce qui déclenche une écriture de bloc et donc un bloc sale?

  • La base de données est émis une commande d'arrêt.

  • Un point de contrôle partielle ou totale se produit - ce est lorsque le système déverse périodiquement tous les tampons modifiés sur le disque.

  • Un seuil de temps de récupération, vous avez indiquée, est Met le nombre total de blocs sales provoque un temps de récupération inacceptable.

  • Un bloc libre est nécessaire et aucun ne trouve après une quantité donnée de recherche.

  • Certain langage de définition de données (DDL) commandes. (Commandes DDL sont des instructions SQL qui définissent des objets dans une base de données.)

  • Toutes les trois secondes.

  • Autres raisons. L'algorithme est complexe, et vous ne pouvez pas être certain avec tous les changements qui se produisent à chaque version de logiciel.

Le fait est que la base de données reste blocs d'écriture assez occupé dans un environnement où il ya beaucoup des changements.


» » » Notions de base de la mémoire cache du tampon de base de données dans Oracle 12c