Índice:
- O cache da biblioteca no Oracle 12c
- O cache do dicionário no Oracle 12c
- O cache do resultado do servidor no Oracle 12c
- O pool reservado no Oracle 12c
- Algoritmo menos usado recentemente no Oracle 12c
Vídeo: Web Programming - Computer Science for Business Leaders 2016 2024
Certos objetos e dispositivos no Oracle 12c são usados com freqüência. Por isso, faz sentido prepará-los sempre que quiser fazer uma operação. Além disso, os dados no pool compartilhado nunca são gravados no disco.
O pool compartilhado é composto por quatro áreas principais:
-
Cache da biblioteca
-
Cache do dicionário
-
Cache do resultado do servidor
-
Pool reservado
A cache é uma área temporária na memória criada para uma rápida busca de informações que, de outra forma, poderiam levar mais tempo para recuperar. Por exemplo, os caches mencionados na lista anterior contêm informações pré-computadas. Em vez de um usuário ter que calcular valores de cada vez, o usuário pode acessar as informações em um cache.
O cache da biblioteca no Oracle 12c
O cache da biblioteca é exatamente como o chamado: uma biblioteca. Mais especificamente, é uma biblioteca de instruções SQL prontas a serem executadas.
Cada vez que você executa uma instrução SQL, muito acontece em segundo plano. Essa atividade em segundo plano é chamada de análise . Parsing pode ser bastante caro em termos de poder de processamento.
Durante a análise, algumas dessas coisas acontecem:
-
A sintaxe da instrução é verificada para ter certeza de que você digitou tudo corretamente.
-
Os objetos aos quais você está se referindo estão marcados. Por exemplo, se você estiver tentando acessar uma tabela chamada EMPREGADO, a Oracle assegura que ela existe no banco de dados.
-
Oracle garante que você tenha permissão para fazer o que você está tentando fazer.
-
O código é convertido em um formato pronto para banco de dados. O formato é chamado byte-code ou p-code.
-
Oracle determina o caminho ou o plano ideal. Esta é, de longe, a parte mais cara.
Toda vez que você executa uma declaração, as informações são armazenadas no cache da biblioteca. Dessa forma, na próxima vez que você executar a instrução, não há muito que ocorrer (como verificar permissões).
O cache do dicionário no Oracle 12c
O cache do dicionário também é usado com freqüência para analisar quando você executa o SQL. Você pode pensar nisso como uma coleção de informações sobre você e os objetos do banco de dados. Pode verificar informações de tipo de plano de fundo.
O cache do dicionário também é regido pelas regras do algoritmo Menos Recentemente Usado (LRU): se não for o tamanho certo, as informações podem ser despejadas. Não ter espaço suficiente para o cache do dicionário pode afetar o uso do disco.
Como as definições de objetos e informações baseadas em permissão são armazenadas em arquivos de banco de dados, a Oracle deve ler discos para recarregar essas informações no cache do dicionário. Isso é mais demorado do que obtê-lo do cache de memória.Imagine um sistema com milhares de usuários executando constantemente SQL … um cache de dicionário de tamanho incorreto pode realmente dificultar o desempenho.
Como o cache da biblioteca, você não pode controlar o tamanho do cache do dicionário diretamente. Como o pool compartilhado geral muda de tamanho, o mesmo ocorre com o cache do dicionário.
O cache do resultado do servidor no Oracle 12c
O cache do resultado do servidor tem duas partes:
-
cache de resultados SQL: Este cache permite que a Oracle veja que os dados solicitados - solicitados por uma declaração SQL executada recentemente - podem seja armazenado na memória. Essa situação permite que a Oracle ignore a parte de execução da execução, por falta de um termo melhor, e vá diretamente ao conjunto de resultados, se existir.
O cache de resultados SQL funciona melhor em dados relativamente estáticos (como a descrição de um item em um site de comércio eletrônico).
Se você se preocupar com o cache do resultado retornando dados incorretos? De modo nenhum. O Oracle invalida automaticamente os dados armazenados no cache de resultados se qualquer um dos componentes subjacentes for modificado.
-
cache do resultado da função PL / SQL: O cache do resultado da função PL / SQL armazena os resultados de uma computação. Por exemplo, digamos que você possui uma função que calcula o valor do dólar com base na taxa de câmbio do euro. Você pode não querer armazenar esse valor real, uma vez que muda constantemente.
Em vez disso, você possui uma função que exige uma taxa diária ou horária 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 que executa, ele vai diretamente ao cache de resultados PL / SQL para obter os dados entre as atualizações de taxa. Se a taxa mudar, o Oracle re-executa a função e atualiza o cache de resultados.
O pool reservado no Oracle 12c
Quando a Oracle precisa alocar um bloco grande (mais de 5 KB) de memória contígua no pool compartilhado, ele aloca a memória no pool reservado. Dedicar o pool reservado para lidar com grandes alocações de memória melhora o desempenho e reduz a fragmentação da memória.
Algoritmo menos usado recentemente no Oracle 12c
Se o cache da biblioteca é curto no espaço, os objetos são descartados. As declarações que são utilizadas mais permanecem no cache da biblioteca o mais longo. Quanto mais vezes eles são usados, menor será a chance de serem despejadas se o cache da biblioteca for curto no espaço.
O processo de despejo do cache da biblioteca é baseado no chamado algoritmo Menos Recentemente Usado (LRU). Se a sua mesa estiver desordenada, o que você coloca em primeiro lugar? O mínimo que você usa.
Você não pode alterar o tamanho do cache da biblioteca. O tamanho geral do pool compartilhado determina isso. Se você acha que muitas declarações estão sendo despejadas, você pode aumentar o tamanho geral do pool compartilhado se você estiver ajustando você mesmo. Se você estiver deixando o Oracle fazer o ajuste, ele ganha memória livre de outro lugar.