sábado, 1 de maio de 2010

Processamento das Instruções SQL no Oracle


Fala Pessoal,

Um Bom entendimento de como as instruções SQL são processadas no banco é fundamental para uma criação otimizada de instruções SQL. No Processamento de Instruções SQL, existem quatro fases Importantes as quais vou relatar ao longo dos meus posts e que são elas:
Parsing,binding,Executing and Fetching. Nesse post irei começar falando da fase de parse.

Fase de Parse (Análise)
A Fase de Parsing é um dos estágios que ocorre no processamento das instruções SQL. Quando uma aplicação emite uma instrução SQL, , ela na realidade emite uma chamada para o banco de dados e durante essa chamada para o banco analisar essa instrução, ou seja verificar se realmente é possível extrair resultados dela, e nessa fase de analise, o Oracle:

  • Verifica a instrução sql, sua sintaxe e  valida a sua semântica




  • Determina se o processo de emissão da instrução SQL tem a devida permissão para executá-la.




  • Aloca uma área privada para a instrução SQL




  • O Oracle primeiramente verifica se já existe uma analise (parse) dessa instrução SQL no cachê de biblioteca. Se já existir uma analise dessa instrução no cachê de biblioteca, essa instrução é executada imediatamente porém se a mesma não existir, o Oracle irá gerar uma analise dessa instrução e o processo do usuário ira alocar uma área de SQL compartilhada para a instrução no cachê de biblioteca após esse procedimento a instrução será analisada nesta área.
    A Operação de Parse (análise) do Oracle sempre aloca uma área compartilhada para uma instrução SQL. Depois dessa área compartilhada ter sido alocada para essa instrução, a mesma já pode ser executada novamente repetitivamente(varias vezes) sem precisar ser analisada , ou seja sem precisar passar pela fase de Parse. O processo de Analise pode ser "caro" em relação a execução, pode ter um alto custo dos requisitos disponíveis, por isso essa etapa deve ser minimizada sempre que possível. O Ideal é que a instrução deva ser analisada uma vez e executada varias vezes sem a necessidade de uma nova análise para cada execução.
    Existem dois Tipos de Operação de Parse (Analise):
    1. Hard Parsing : Dizemos que existe uma operação de Hard Parse quando uma instrução Sql é executada pela primeira vez e ela não se encontrada na shared pool. Esse tipo de parse é a fase que mais consome recurso intensivamente do banco de dados, porque quando isso ocorre é necessario executar todas as operações necessárias da fase de parse.
    2. Soft Parsing: Dizemos que existe uma operação de Soft Parse quando uma instrução executada já existe na shared pool..Quando uma instrução sql já esta armazenada no cache de biblioteca temos um ganho de performance.No entando, até mesmo na fase de parse temos ainda um consumo de recursos, pois mesmo a instrução já estando armazenada o banco ainda precisa verificar os parâmetros de segunça e a sintaxe da instrução e isso consome recursos do sistema.

    Quando as variáveis bind (ligação) são usadas de modo correto, a operação de sof parsing ocorre mais vezes no banco da dados, reduzindo assim a operação de hard parsing e mantendo as instruções analisadas na cachê de biblioteca por um tempo maior.

    Nenhum comentário:

    Postar um comentário