Artigo do tipo Exemplos Práticos
Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
Otimizando consultas no Oracle
A otimização de consultas é uma busca constante dos profissionais envolvidos na administração de bancos de dados. Motivado por esta preocupação, os SGBDs atuais já trazem um conjunto grande de facilidades que, em muitas vezes, automatizam o processo de otimização.

Neste artigo será mostrado como identificar a necessidade de fazermos um tuning de consultas SQL. Depois de definido um ponto crítico, será demostrado os vários meios existentes de coleta de dados necessários para obtenção de informação de análise do problema. Por fim, temos uma conclusão descrevendo como determinar a causa do problema que está sendo analisado.

Em que situação o tema útil
Os administradores de banco de dados gastam atualmente muito tempo na realização de monitoração e ajuste de consultas SQL. Ter o conhecimento de uma metodologia padrão para análise de problemas desse tipo vai auxiliar a utilizar melhor o tempo dentre as atividades desempenhadas pelo profissional.

Um tuning de consulta SQL é um processo interativo que requer um entendimento completo do ambiente onde está armazenado o banco de dados (versão do banco de dados, sistema operacional, aplicativos, etc.).

O suporte padrão da Oracle fornece soluções para bugs que podem afetar o desempenho do banco de dados e seus componentes. Também podem fornecer recomendações gerais para iniciar o processo de ajuste.

Para executar uma análise de desempenho, a Oracle recomenda algumas diretrizes que serão apresentadas nesse artigo.

Reconhecendo a necessidade de tuning para a consulta SQL

A necessidade de fazer um tuning de consulta SQL pode ser percebida, de um modo geral, quando uma consulta SQL é executada bem mais lenta em um determinado momento enquanto outras consultas são executadas em um tempo satisfatório para o negócio. Esse é um fato importante de se observar, pois muitas vezes quando todas ou a grande maioria das consultas estão lentas, a rede, hardware ou outros fatores podem estar interferindo.

Existem várias formas de identificar essas consultas. Pode ser através de reclamações de usuários. Também se pode comparar o tempo de execução de rotinas críticas previamente coletadas e comparadas com o tempo atual. Um recurso muito usado são os relatórios do STATSPACK ou AWR (ler BOX 1) que mostram os comandos SQL críticos. Vários destes problemas podem aparecer depois de alterações de objetos do banco de dados, por mudanças nas estatísticas das tabelas, por mudanças em volumes de dados, por mudanças na aplicação, bem como por atualizações/aplicação de patch de banco de dados.

BOX 1. Statspack e AWR

O statspack e AWR (este mais antigo e substituído pelo statspack) são utilitários disponibilizados pela Oracle que fornecem rapidamente um conjunto de informações sobre o desempenho do banco. Uma destas informações é justamente o conjunto de instruções SQL consideradas críticas pelo banco.

Uma determinação clara do problema é fundamental. Pode ser que em fases posteriores da análise, o problema real se torne mais claro e assim tem que se rever e voltar a determinar os detalhes. Para determinar os detalhes, devemos saber, tanto quanto possível o comando ou grupo de comandos SQL envolvidos e a sequência de eventos que levou ao problema. Além disso, é importante identificar onde e como o problema foi evidenciado e qual a sua importância.

Ignorar esta etapa vai ser arriscado, porque podemos atacar o problema errado e perder tempo e esforço significativo.

Verificando se um problema é um problema

O objetivo neste passo do processo de diagnóstico é assegurar que a consulta que imaginamos precisar ser ajustada é, na verdade, a consulta da origem do problema de desempenho. Neste ponto, precisaremos coletar dados que verificam a existência de um problema.

Para isso, devemos coletar:

• O comando SQL;

...
Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo