Como Oracle decidir quais blocos estão ausentes no buffer cache para uma consulta?

0

Pergunta

Suponha que executamos os seguintes consulta.

select * from employees where salary > 10000;

Depois de algum tempo, executamos a consulta a seguir.

select * from employees where salary > 500;

O segundo tendem a retornar mais blocos. Mas já temos alguns desses blocos na cache de buffer por causa da consulta anterior. Talvez alguns deles são excluídos formam a cache de buffer, mas alguns ou todos os blocos da primeira consulta ainda pode existir existe. Então, aqui, o servidor de banco de dados deve saber quais blocos já existentes e aquelas a ler a partir do disco além disso.

A minha pergunta é, como o banco de dados de descobrir e decidir o que bloqueia a ler a partir do disco além disso?

1

Melhor resposta

3

O Oracle utiliza o LRU técnica ( que significa 'recentemente menos usado"). É um algoritmo de computador usado para gerenciar dados em um cache. Quando uma cache fica cheio e você precisa de espaço para coisas novas - descartar o menos usado recentemente itens de primeira (coisas que você ainda não usou por um tempo, mas estão no cache consumir espaço).

Ele não é específico para blocos de dados e blocos de dados não são realmente mantidos em uma lista LRU, eles são gerenciados por um toque de contagem estes dias, mas que o toque de contagem do algoritmo é muito semelhante a um LRU, então você pode pensar dessa forma.

Em resumo, quando você ouvir LRU, pense em uma cache que gere alguns dados (todos os dados), e tende a descartar os itens do cache baseado no que eles têm sido usados recentemente ou não. Mais recentemente, algo que tem sido utilizado - o mais provável é ficar em cache.

Cada bloco tem um DBA - bloco de dados de endereços, que consiste em um arquivo# e o bloco#. Este identifica um bloco em um banco de dados. O Oracle utiliza de que a "chave" para identificar o bloco na cache de buffer.

Se você executar uma consulta, se alguns blocos não estão em cache, é porque o LRU limpou-los, a fim de alocar mais coisas que são mais usados recentemente. Isso não é garantia, mas se você precisa desse tipo de garantia, você pode usar diferentes piscinas do cache de buffer, principalmente, você pode usar o KEEP piscina para manter acessados com frequência segmentos no buffer cache.

Espero que esclarece.

2021-10-28 11:08:38

@oramas, quaisquer dúvidas sobre a resposta ?
Roberto Hernandez

Em outros idiomas

Esta página está em outros idiomas

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