Por que eu devo ler este artigo:Devido ao crescimento cada vez maior da quantidade de sistemas e usuários nas organizações, e também da quantidade de dados que estes sistemas acessam, torna-se cada vez mais importante otimizar o acesso e as atualizações desses dados. Para atender esta necessidade, apresentaremos neste artigo um dos métodos principais para verificar o desempenho de instruções SQL em bancos de dados, a análise de SQL Traces.

Os métodos de geração de SQL Trace e as dicas apresentadas neste artigo são muito úteis e importantes para que qualquer profissional envolvido com o desenvolvimento ou manutenção de sistemas (normalmente um Desenvolvedor ou um DBA) possa identificar instruções SQL com desempenho ruim, e posteriormente, otimizá-las.

A análise de SQL Traces é um dos métodos mais eficientes para identificar problemas de performance, portanto, este artigo é extremamente útil para ajudar os profissionais que possuem este tipo problema.

Com o passar dos anos, crescem a quantidade de sistemas corporativos (Ex.: ERPs, GEDs etc.), sistemas web e, consequentemente, o número de usuários e bancos de dados nas organizações.

Cresce também a quantidade de sistemas críticos, que necessitam de boa performance e segurança. Visando a otimização destes sistemas, especificamente as instruções SQL que eles executam em bancos de dados, existem atualmente dois métodos disponíveis para investigação de problemas de performance: instrumentação e análise de profiles.

Para investigar problemas de performance em bancos de dados Oracle, instrumentação é o método mais utilizado, sendo realizado através da análise de SQL Traces.

Além de SQL Traces, existem outros tipos de trace em bancos de dados Oracle, como por exemplo, PL/SQL Trace, para analisar a execução de blocos PL/SQL. Deste modo, é importante ressaltar que veremos neste artigo somente o trace de instruções SQL (SQL Trace). Para facilitar a compreensão, a partir de agora, sempre que citarmos a palavra “trace”, estaremos nos referindo a SQL trace.

Nosso objetivo é apresentar as ferramentas que podem ser utilizadas para gerar um SQL Trace dentro de um SGBD Oracle e como analisar estes arquivos para que possamos entender se uma instrução SQL teve um bom desempenho ou não. Antes, porém, é necessário ter alguns conhecimentos básicos como, por exemplo, entender como uma instrução SQL é executada dentro do banco de dados.

Como uma instrução SQL é executada?

Instruções SQL são executadas em bancos de dados Oracle por um componente do SGBD chamado Otimizador. O Otimizador analisa e executa as instruções SQL em três passos, descritos a seguir:

1. Parse: primeira fase da execução. Nesta fase o otimizador do Oracle analisa basicamente a sintaxe e a semântica da instrução SQL, e por fim, monta um plano de execução para ela;

2. Execute: segunda fase da execução. Esta é a fase em que o otimizador executa a instrução SQL, de acordo com oplano de execuçãomontado no passo anterior;

3. Fetch: última fase da execução e única que não é obrigatória. Nesta fase ootimizador retorna os dados para a sessão de usuário. Este retorno só ocorre em instruçõesSELECT.

É importante entender estes conceitos básicos para que possamos posteriormente analisar um arquivo de SQL Trace, pois veremos em seu conteúdo informações relacionadas ao tempo total de execução de cada passo mencionado nos parágrafos anteriores.

O que é SQL Trace?

SQL Trace é um método de rastreamento de comandos SQL que permite verificar o que está sendo executado no banco de dados e que pode ser utilizado para corrigir erros (debug) ou otimizar instruções SQL. No banco de dados Oracle, o SQL Trace pode ser habilitado no nível de sessão ou no nível de instância.

Após habilitar o SQL Trace na sessão de um usuário, todas as instruções SQL subsequentes que ele submeter ao banco de dados serão registradas em um arquivo de SQL Trace, comumente conhecido comoarquivo trace.

As principais informações que um arquivo trace contêm são:

· Contadores de parse, fetch e execute;

· Tempo de CPU e o tempo total de execução de instruções SQL;

· Quantidade de leituras físicas e lógicas;

· Quantidade de linhas processadas.

Um arquivo trace possui seu nome composto pelas seguintes partes:nome da instânci ...

Quer ler esse conteúdo completo? Tenha acesso completo