Fundamentos do pool compartilhado em 12c oráculo

Certos objetos e dispositivos no Oracle 12c são usados ​​com freqüência. Portanto, faz sentido para tê-los prontos cada vez que você quer fazer uma operação. Além disso, os dados no pool compartilhado nunca é gravado no disco.

O próprio piscina comum é composta de quatro áreas principais:

  • cache de biblioteca

  • cache de dicionário

  • cache de resultado servidor

  • reservado Piscina

UMA esconderijo é uma área temporária na memória criado para uma rápida busca de informações que poderiam levar mais tempo para recuperar. Por exemplo, as caches mencionados na lista anterior contêm informação pré-computadas. Em vez de um usuário ter que calcular os valores de cada vez, o usuário pode acessar as informações em um cache.

O cache de biblioteca no Oracle 12c

O cache de biblioteca é como o que é chamado: a biblioteca. Mais especificamente, é uma biblioteca de instruções SQL ready-to-go.

Cada vez que você executar uma instrução SQL, muita coisa acontece em segundo plano. Esta atividade fundo é chamado análise. Análise pode ser muito caro em termos de poder de processamento.

Durante a análise, algumas dessas coisas acontecem:

  • A sintaxe da instrução é verificado para certificar-se de que você digitou tudo corretamente.

  • Os objetos que você está se referindo são verificados. Por exemplo, se você está tentando acessar uma tabela EMPLOYEE, a Oracle garante que existe no banco de dados.

  • A Oracle garante que você tem permissão para fazer o que você está tentando fazer.

  • O código é convertido para um formato de banco de dados pronto. O formato é chamado byte do código ou p-código.

  • A Oracle determina o caminho ideal ou plano. Esta é de longe a parte mais cara.



Toda vez que você executar uma declaração, as informações são armazenadas no cache de biblioteca. Dessa forma, a próxima vez que você executar a instrução não muito tem de ocorrer (como verificar as permissões).

O cache de dicionário no Oracle 12c

O cache de dicionário também é freqüentemente usado para analisar quando você executar SQL. Você pode pensar nisso como um conjunto de informações sobre você e objetos do banco de dados. Pode verificar a informação do tipo de fundo.

O cache de dicionário também é regido pelas regras do Least Recently Used (LRU) algoritmo: Se não é o tamanho certo, a informação pode ser despejada. Não ter espaço suficiente para o cache de dicionário pode afetar o uso do disco.

Como as definições de objetos e informações baseadas em permissão são armazenados em arquivos de banco de dados, a Oracle tem de ler discos para recarregar essas informações em cache dicionário. Isso é mais demorada do que começá-lo a partir do cache de memória. Imagine um sistema com milhares de usuários em constante execução de SQL. . . um cache de dicionário dimensionados de forma inadequada pode realmente prejudicar o desempenho.

Como o cache de biblioteca, você não pode controlar o tamanho do cache de dicionário diretamente. Como as mudanças piscina comum gerais de tamanho, assim que faz o cache de dicionário.

O cache de resultado servidor no Oracle 12c

O cache de resultado servidor tem duas partes:

  • cache de resultados SQL: Esse cache permite que o Oracle ver que os dados solicitados - solicitado por uma instrução SQL recentemente executado - pode ser armazenado na memória. Esta situação permite que a Oracle pular a parte de execução do, er, a execução, por falta de um termo melhor, e ir diretamente para o conjunto de resultados se ele existir.

    O cache de resultados SQL funciona melhor em dados relativamente estáticos (como a descrição de um item em um site de e-commerce).

    Se você se preocupar com o cache de resultados retornar dados incorretos? De modo nenhum. A Oracle invalida automaticamente os dados armazenados no cache resultado se qualquer um dos componentes subjacentes são modificados.

  • PL cache / resultado da função SQL: O cache de resultado da função PL / SQL armazena os resultados de um cálculo. Por exemplo, digamos que você tenha uma função que calcula o valor do dólar com base na taxa de câmbio do Euro. Você não pode querer armazenar esse valor real, uma vez que muda constantemente.

    Em vez disso, você tem uma função que chama em uma taxa diária ou por hora para determinar o valor do dólar. Em uma aplicação financeira, esta chamada pode acontecer milhares de vezes por hora. Portanto, em vez da função de executar, ele vai diretamente para o cache de resultados de PL / SQL para obter os dados entre as atualizações de taxa. Se a taxa muda, a Oracle re-executa a função e atualiza o cache de resultados.

A piscina reservada no Oracle 12c

Quando a Oracle precisa alocar uma grande parte (mais de 5 KB) de memória contígua na piscina compartilhada, ele aloca a memória na piscina reservados. Dedicando a piscina reservada para lidar com grandes alocações de memória melhora o desempenho e reduz fragementation memória.

Menos recentemente utilizado algoritmo no Oracle 12c

Se o cache de biblioteca é pequena em espaço, os objetos são jogados fora. Declarações que são usados ​​o mais ficar no cache de biblioteca a mais longa. Quanto mais vezes eles são usados, menor a chance que eles têm de ser expulsos se o cache de biblioteca é curto no espaço.

O processo de despejo cache de biblioteca é baseada no que é chamado de Least Recently Used (LRU) algoritmo. Se sua mesa está cheia, o que você colocar o primeiro? O material que você usar o mínimo.

Não é possível alterar o tamanho do cache de biblioteca si mesmo. tamanho total do pool compartilhado determina isso. Se você acha que muitas declarações estão sendo expulsos, você pode aumentar o tamanho geral piscina comum se você está ajustando-lo sozinho. Se você está deixando a Oracle fazer o tuning, ele pega memória livre de outro lugar.


Publicações relacionadas