Comment Oracle décider les blocs qui sont absents dans la mémoire tampon pour une requête?

0

La question

Supposons que nous avons exécuté la requête suivante.

select * from employees where salary > 10000;

Après un certain temps, nous avons exécuté la requête suivante.

select * from employees where salary > 500;

La deuxième tendance à revenir plusieurs blocs. Mais nous avons déjà certains de ces blocs dans le cache de tampons en raison de la requête précédente. Peut-être que certains d'entre eux sont supprimés de la mémoire tampon, mais certains ou tous les blocs de la première requête peut encore exister là-bas. Ici, le serveur de base de données doit savoir les blocs qui existent déjà et ceux qu'il faut lire à partir du disque de plus.

Ma question est, comment le trouver de la base de données et de décider qui bloque la lecture à partir du disque de plus?

1

La meilleure réponse

3

Oracle utilise la LRU technique ( qui signifie "la moins récemment utilisée"). C'est un algorithme d'ordinateur utilisé pour gérer les données dans une mémoire cache. Lorsque le cache est plein et que vous avez besoin de l'espace pour de nouvelles choses - vous de jeter le moins récemment utilisé des éléments de la première (des choses que vous n'avez pas utilisé pendant un certain temps, mais qui sont dans le cache de consommation d'espace).

Il n'est pas spécifique à des blocs de données et les blocs de données ne sont pas vraiment gardé dans un LRU liste, ils sont gérés par une touche compter ces jours - mais qui touchent à compter de l'algorithme est très semblable à un LRU, de sorte que vous pouvez penser de cette façon.

En bref, quand vous entendez de la LRU, pensez à un cache qui gère des données (toutes les données), et tend à éliminer les éléments de la mémoire cache selon qu'ils ont été récemment utilisé ou non. Plus récemment, quelque chose a été utilisée, plus elle est susceptible de rester dans le cache.

Chaque bloc a un administrateur de base de données d'adresse de bloc - qui se compose d'un numéro de dossier et le bloc#. Cela identifie un bloc dans une base de données. Oracle utilise que de la "clé" pour identifier le bloc dans le cache de tampons.

Si vous exécutez une requête, si certains blocs ne sont pas dans le cache, c'est parce que la LRU a autorisé, afin d'allouer plus de choses qui sont les plus récemment utilisés. Il n'est pas garantie, mais si vous avez besoin de ce type de garantie, vous pouvez utiliser les différents bassins dans le cache de tampons, principalement, vous pouvez utiliser le KEEP piscine à maintenir fréquemment utilisés dans les segments de la mémoire tampon.

Espérons qu'il précise.

2021-10-28 11:08:38

@oramas, tous les doutes sur la réponse ?
Roberto Hernandez

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................