Fundamentos do cache de base de dados em memória intermédia 12c do oracle

Oracle 12c de cache do buffer do banco de dados

é normalmente a maior porção da PIG. Ele tem dados que vem dos arquivos no disco. Porque o acesso a dados do disco é mais lenta do que a partir da memória, a único propósito do cache de buffer do banco de dados é armazenar em cache os dados na memória para acesso mais rápido.

O cache de buffer do banco de dados pode conter dados de todos os tipos de objetos:

  • tabelas

  • índices

  • visualizações materializadas

  • dados do sistema

Na frase cache do buffer do banco de dados, o termo amortecedor refere-se a blocos de dados. UMA bloco de banco de dados é a quantidade mínima de armazenamento que a Oracle lê ou escreve. Todos os segmentos de armazenamento que contêm os 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, várias linhas na mesma tabela são susceptíveis de ser recuperado. O mesmo vale se você solicitar uma coluna em uma linha. A Oracle lê o bloco inteiro, que provavelmente tem muitas linhas e todas as colunas para essa linha.

É possível pensar que, se a sua mesa departamentos tem apenas dez linhas, a coisa toda pode ser lido na memória, mesmo se você está solicitando o nome de apenas um departamento.

Tampão estado de cache no Oracle 12c

o tampão de cache controla o que bloqueia começa a ficar dependendo do espaço disponível e o estado do bloco (semelhante à forma como o pool compartilhado decide o SQL começa a ficar). O cache de buffer usa sua própria versão do algoritmo LRU.

Um bloco no cache tampão pode ser em um de três estados:

  • Livre: Não sendo usado para qualquer coisa

  • Fixado: Atualmente está sendo acessada

  • Sujo: Bloco foi modificado, mas ainda não gravados no disco

blocos livres

Idealmente, blocos livres estão disponíveis sempre que você precisar deles. No entanto, isso provavelmente não é o caso, a menos que seu banco de dados é tão pequena que a coisa toda pode caber na memória.

Video: Arquitetura Oracle Database 11g - Estrutura de memória

O algoritmo LRU funciona um pouco diferente no cache de buffer do que ele faz na piscina compartilhada. Ela marca cada bloco e, em seguida, vezes quanto tempo ele tem sido desde que foi acessada. Por exemplo, um bloco recebe um ponto de cada vez que for tocado.



Quanto maior os pontos, menos provável que o bloco será liberado da memória. No entanto, deve ser acessada com freqüência ou a pontuação diminui. Um bloco tem que trabalhar duro para ficar na memória se a competição por recursos de memória é alto.

Video: Normalização - Aula 06 - Bancos de Dados 2016.1

Dando a cada bloco de uma pontuação e tempo impede este tipo de situação que surjam: 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 é acessado novamente.

Ele fica lá desperdiçando memória até que o banco de dados é reiniciado ou outro bloco, finalmente, marca pontos suficientes para vencê-lo fora. Os componentes idades tempo que muito rapidamente depois que você não acessá-lo.

blocos fixados

Um bloco a ser acedido é um bloco fixado. O bloco está bloqueado (ou fixado) na cache de memória intermédia de modo que não pode ser envelhecido fora do cache de tampão, enquanto o processo de Oracle (muitas vezes representando um utilizador) está a aceder a ela.

blocos de sujos

Um bloco modificado é um bloco de sujo. Para garantir que as alterações são mantidas através de paralisações de banco de dados, esses blocos de sujos devem ser escritos a partir do cache para disco. Os nomes de banco de dados blocos sujos em uma lista suja ou fila de gravação.

Você pode pensar que cada vez que um bloco é modificado, ele deve ser escrito para o disco para minimizar os dados perdidos. Este não é o caso - nem mesmo quando há uma cometer (Quando você salvar as alterações permanentemente)! Várias estruturas ajudar a prevenir a perda de dados.

Além disso, a Oracle tem um problema de jogo. O desempenho do sistema iria rastejar se você escreveu blocos no disco para cada modificação. Para combater isso, a Oracle desempenha as chances de que o banco de dados é improvável a falhar e escreve blocos para disco somente em grupos maiores.

Não se preocupe, não é mesmo um risco contra perda de dados. Oracle está recebendo o desempenho do banco de dados agora mesmo com o possível custo de uma tomada de recuperação mais longo mais tarde. Porque as falhas em sistemas adequadamente gerenciados raramente ocorrem, é uma forma barata de ganhar algum desempenho. No entanto, não é como se a Oracle deixa blocos sujos todo sem limpeza após si.

Bloquear gravação desencadeia no Oracle 12c

O que desencadeia uma gravação bloco e, portanto, um bloco de sujo?

  • O banco de dados é emitido um comando de desligamento.

  • Um ponto de verificação total ou parcial ocorre - que é quando o sistema despeja periodicamente todos os buffers sujos no disco.

  • Um limite de tempo de recuperação, definido por você, é met- o número total de blocos de sujos provoca um tempo de recuperação inaceitável.

  • Um bloco livre é necessária e nenhum são encontrados depois de uma determinada quantidade de busca.

  • Certa linguagem de definição de dados (DDL) comandos. (Comandos DDL são instruções SQL que definem objetos em um banco de dados.)

  • A cada três segundos.

    Video: Conexão e Replicação de Dados em SGBD diferentes (ORACLE E MySQL)

  • Outras razões. O algoritmo é complexo, e você não pode estar certo com todas as mudanças que ocorrem com cada versão do software.

O fato é que o banco de dados permanece blocos de escrita muito ocupados em um ambiente onde há um grande número mudanças.


Publicações relacionadas