Índice:
Vídeo: Aula Arquitetura de Banco de Dados Oracle - Log Buffer/Redo Log File 2024
O cache de buffer do banco de dados do Oracle 12c é normalmente a maior parte do SGA. Tem dados provenientes dos arquivos no disco. Como o acesso aos dados do disco é mais lento do que a partir da memória, o único objetivo do cache do buffer do banco de dados é armazenar em cache os dados na memória para acesso mais rápido. O cache do buffer do banco de dados pode conter dados de todos os tipos de objetos:
Tabelas
-
Índices
-
-
Dados do sistema
-
Na frase
cache do buffer de banco de dados, o termo buffer refere-se a blocos de banco de dados. Um bloco de banco de dados é a quantidade mínima de armazenamento que o Oracle lê ou escreve. Todos os segmentos de armazenamento que contêm dados são constituídos por blocos. Quando você solicita dados do disco, no mínimo o Oracle lê um bloco. Mesmo se você solicitar apenas uma linha, muitas linhas na mesma tabela provavelmente serão recuperadas. O mesmo acontece se você solicitar uma coluna em uma linha. Oracle lê o bloco inteiro, que provavelmente tem muitas linhas e todas as colunas para essa linha.
Estado do cache do Buffer no Oracle 12c
O
buffer cache controla quais blocos ficam dependendo do espaço disponível e do estado do bloco (semelhante ao modo como o pool compartilhado decide o que o SQL pode permanecer). O cache do buffer usa sua própria versão do algoritmo LRU.
Gratuito:
-
Não está sendo usado para nada Pinned:
-
Atualmente acessando > Sujo: O bloco foi modificado, mas ainda não escreveu no disco
-
Blocos gratuitos Idealmente, blocos gratuitos estão disponíveis sempre que precisar deles. No entanto, isso provavelmente não é o caso, a menos que seu banco de dados seja tão pequeno que tudo pode caber na memória.
O algoritmo LRU funciona um pouco diferente no cache do buffer do que no pool compartilhado. Ele classifica cada bloco e, em seguida, vezes quanto tempo existe desde que foi acessado. Por exemplo, um bloco recebe um ponto cada vez que é tocado.
Quanto maiores os pontos, menos provável o bloco será liberado da memória. No entanto, deve ser acessado com freqüência ou a pontuação diminui. Um bloco tem que trabalhar duro para manter a memória se a competição por recursos de memória for alta.
Dando a cada bloco uma pontuação e tempo evita que esse tipo de situação surja: um bloco é acessado pesadamente no final do mês para relatórios.Sua pontuação é maior do que qualquer outro bloco no sistema. Esse bloco nunca mais será acessado.
Senta-se desperdiçando memória até que o banco de dados seja reiniciado ou outro bloco finalmente pontue pontos suficientes para vencê-lo. O componente de tempo envelhece muito rapidamente depois de você não mais acessá-lo.
Blocos fixos
Um bloco atualmente acessado é um bloqueio
fixado.
O bloco está bloqueado (ou fixado) no buffer buffer para que ele não possa ser envelhecido fora do buffer buffer enquanto o processo Oracle (geralmente representando um usuário) está acessando. Blocos sujos Um bloco modificado é um bloco sujo
.
Para garantir que suas alterações sejam mantidas em paradas de banco de dados, esses blocos sujos devem ser escritos a partir do buffer buffer para o disco. O banco de dados nomeia blocos sujos em uma lista suja ou fila de gravação. Você pode pensar que sempre que um bloco é modificado, ele deve ser gravado no disco para minimizar os dados perdidos. Este não é o caso - nem mesmo quando há um commit
(quando você salva suas alterações de forma permanente)! Várias estruturas ajudam a evitar dados perdidos. Além disso, a Oracle tem um problema de jogo. O desempenho do sistema rastrearia se você escreveu blocos no disco para cada modificação. Para combater isso, a Oracle joga as chances de que o banco de dados não é provável que falhe e grava blocos em disco somente em grupos maiores. Não se preocupe; nem sequer é um risco contra dados perdidos. A Oracle está obtendo o desempenho do banco de dados
agora mesmo
com a possível despesa de uma recuperação que leva mais mais tarde. Como as falhas nos sistemas corretamente gerenciados raramente ocorrem, é uma maneira barata de obter algum desempenho. No entanto, não é como se a Oracle deixasse blocos sujos por toda parte sem limpar depois de si. Bloquear disparadores de gravação no Oracle 12c O que desencadeia um bloco de gravação e, portanto, um bloco sujo?
O banco de dados é emitido um comando de desligamento.
Ocorre um ponto de verificação total ou parcial - é quando o sistema despeja periodicamente todos os buffers sujos no disco.
-
Um limite de tempo de recuperação, definido por você, é cumprido; o número total de blocos sujos causa um tempo de recuperação inaceitável.
-
É necessário um bloco livre e nenhum é encontrado após uma determinada quantidade de pesquisa.
-
Certos comandos de linguagem de definição de dados (DDL). (Os comandos DDL são instruções SQL que definem objetos em um banco de dados.)
-
Todos os três segundos.
-
Outros motivos. O algoritmo é complexo e você não pode estar seguro com todas as mudanças que ocorrem com cada versão de software.
-
O fato é que o banco de dados permanece bastante ocupado escrevendo blocos em um ambiente onde há muitas mudanças.