De que se trata o artigo

Este artigo tem como objetivo explicar a nova estrutura de memória introduzida no Oracle 11g, o Result Cache. Para isso é abordada a forma como o Result Cache funciona, as views dinâmicas do dicionário de dados que podem ser utilizadas para seu gerenciamento e parâmetros de inicialização da instância do Oracle relacionados. Além disso, é mostrado um exemplo prático dos benefícios do Result Cache tanto para instruções SQL como PL/SQL.

Em que situação o tema é útil

A performance de um banco de dados é um elemento crítico e, devido à crescente complexidade dos sistemas, tem se tornado cada vez mais importante utilizar todos os recursos disponíveis para alcançar o máximo desempenho. O Result Cache permite que o Oracle armazene o resultado de consultas, otimizando ambientes de Data Warehouse e situações em que consultas ou funções são repetidas com uma grande frequência.

Resumo DevMan

O Result Cache é uma área da memória que armazena o resultado de consultas. Ele é subdividido em SQL Query Result Cache (que armazena resultados de consultas SQL) e PL/SQL Function Result Cache (que armazena valores retornados por funções PL/SQL). Ao realizar uma consulta ou executar uma função PL/SQL é possível especificar que o resultado seja armazenado ou procurado na memória, evitando a necessidade de buscar dados em arquivos e consequentemente melhorando a perfomance.

A cada nova versão de um SGBD são aperfeiçoadas e introduzidas diversas novas tecnologias, e com o Oracle 11g não foi diferente. Entretanto, muitas vezes, devido à falta de tempo, acabamos não conhecendo ou tirando o máximo proveito de alguns novos recursos. Isso faz com que muitas aplicações não sejam tão eficientes quanto poderiam ser. Por isso, é importante sempre conhecer e pesquisar novas funcionalidades, principalmente em ambientes em que a performance é uma prioridade.

Dentre os novos recursos oferecidos pelo Oracle 11g está o Result Cache, uma área da memória que tem como principal objetivo otimizar consultas, armazenando seus resultados na memória. O local onde os resultados serão armazenados depende do tipo de Result Cache utilizado, cliente ou servidor. Este artigo aborda o Result Cache localizado no servidor. Neste cenário, ele armazena os resultados na System Global Area, mais especificamente no Shared Pool (ler Nota DevMan 1).

Antes da versão 11g o Oracle armazenava apenas os blocos de dados consultados na memória, o que melhorava a performance, mas não tanto como é possível melhorar ao se armazenar o próprio resultado da consulta. Na versão 11g, se ativado, o resultado é armazenado no SQL Query Result Cache quando é executada uma consulta SQL, ou no PL/SQL Function Result Cache quando é executada uma função PL/SQL.

Para se ter uma idéia dos benefícios dessa estrutura, de acordo com a documentação oficial da Oracle, sem a utilização do Result Cache, 1000 chamadas para uma mesma função que demora 1 segundo para ser executada demorariam no total 1000 segundos. Com a utilização do Result Cache, as mesmas 1000 chamadas retornariam os mesmos resultados e poderiam ser executadas em um total de 1 segundo.

Nota DevMan 1. SGA e Shared Pool

SGA (System Global Area) é uma área de memória compartilhada do banco de dados Oracle, que pode ser acessada por todos os usuários. Ela é divida em componentes como o Database Buffer Cache, Redo Log Buffer, Shared Pool e outras áreas de memória opcionais.

Shared Pool é uma das áreas de memória da SGA, utilizada na execução e análise de instruções SQL. Ela é composta por diversos compenentes, incluindo o Result Cache.

...

Quer ler esse conteúdo completo? Tenha acesso completo