Noções básicas do pool compartilhado no Oracle 12c

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 é escrito para o disco.

A própria piscina comum é constituída por quatro áreas principais:

  • cache de biblioteca

  • cache de dicionário

  • cache de resultados de 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, os caches mencionados na lista anterior contêm informações precomputed. 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 actividade de fundo é chamado análise. De 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 chamada FUNCIONÁRIO, a Oracle garante que existe no banco de dados.

  • A Oracle certifica-se de que você tem permissão para fazer o que você está tentando fazer.

  • O código é convertido em um formato de banco de dados pronto. O formato é chamada 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 os 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.

Porque 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 no cache de 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 dimensionado 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 de piscina comum globais de tamanho, assim que faz o cache de dicionário.

O cache de resultados servidor no Oracle 12c

O cache de resultados servidor tem duas partes:

  • cache de resultados de SQL: Esse cache permite que o Oracle ver que os dados solicitados - solicitado por uma instrução SQL executado recentemente - pode ser armazenado na memória. Esta situação permite que a Oracle pular a parte de execução do, er, execução, por falta de um termo melhor, e ir diretamente para o resultado definido 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 na memória 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 execução, 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 um pedaço grande (acima de 5 KB) de memória contígua no pool compartilhado, 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 utilizado recentemente algoritmo no Oracle 12c

Se o cache de biblioteca é curto no 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 da piscina comum 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.

menu