Analisando Desempenho de Consultas Utilizando Oracle SQL Developer

Oracle SQL Developer é uma ferramenta que nos permite rodar consultas SQL, executando um plano de acesso. Plano este que possibilita fazer uma análise para melhorar o desempenho da consulta. Neste artigo vamos abordar os pontos que devem ser observados.

 

Abaixo temos a Imagem Oracle SQL Developer, onde passamos a consulta SQL a ser analisada.

 

Esta é uma consulta exemplo que permite trazer os dados cadastrais de um determinado cliente. Apartir dessa consulta iremos ilustrar uma análise, com objetivo de termos forma de melhorar o desempenho da mesma.

 

 

 

 

Imagem Oracle SQL Developer

 

 

Pontos de Analise:

 

? Tempo de execu√ß√£o : Esse tempo de execu√ß√£o aparece sobre a toobar conforme a imagem abaixo :  Esse tempo tem dois conceitos s√£o eles :

 

Conceito Perform√°tico e N√£o Perform√°tico: Esse tempo pode ter o conceito de Perform√°tico, ou seja, de que a query est√° retornando a consulta em um tempo r√°pido dependendo de alguns pontos que devem ser compreendidos. Para uma consulta ser r√°pida, devem ser levados em considera√ß√£o a quantidade de dados que est√£o nas tabelas e os relacionamentos que fazem a estrutura da query.  Podemos ter uma consulta pesada que leva um retorno de 01 minuto e ser r√°pida, pois a mesma possui uma grande quantidade de dados nas tabelas e obedece aos relacionamentos, e uma consulta como essa que estamos exemplificando que tem um retorno de 5,595 segundos e n√£o perform√°tica.

Em nosso exemplo vamos analisar o plano de acesso desta query e identificar os pontos a serem melhorados com o objetivo de buscar ao máximo de performance possível da mesma.

 

 

 

 

Imagem Tempo Execução

 

            O tempo destacado acima foi o tempo gasto de retorno da consulta no banco. A partir desse tempo podemos ent√£o analisar nossa consulta. Em nosso exemplo , podemos analisar que √© um tempo alto , que pode comprometer a performance dessa query no banco.

 

            ? Plano de Acesso : Para podermos visualizar o plano de execu√ß√£o da query , temos a op√ß√£o Execute Explain Plan , localizado na barra de ferramentas do SQL Developer conforme a imagem abaixo:

 

 

 

Imagem Opção de Executar Plano Acesso

 

 

 

? Resultado do Plano Acesso : Na imagem a seguir temos o resultado do plano de acesso da query , onde podemos tomar algumas decis√Ķes. Neste caso temos um plano de execu√ß√£o com uma baixa performance.

 

Lembrando : O objetivo de nossa query é trazer os dados cadastrais de Cliente. Nessa nossa consulta estamos usando as tabelas :

 

Tbl_cliente : Permite trazer os dados dos clientes

Tbl_compra : Permite trazer os dados das compras dos clientes

Tbl_estoque : Permite trazer o estoque dos clientes

Tbl_fornecedor : Permite trazer o fornecedor dos produtos em estoque

 

 

Analisando este plano de acesso, podemos identificar que os relacionamentos entre as tabelas que est√£o em negritos precisam ser melhorados. Esses relacionamentos est√£o nos dizendo que nas tabelas est√£o ocorrendo:

 

? Table Access(Full) : Indica  tabela est√° ocorrendo uma leitura em seus dados sem a utiliza√ß√£o de √≠ndices. Desta forma o custo dessa consulta para o banco torna-se robusta dependendo das quantidades de registros que cont√©m na mesma, aumentando o tempo de retorno como vimos na imagem de tempo de execu√ß√£o.

 

Dica : Quando temos um plano de acesso de uma query como a de nosso exemplo , que está indicando Table Access , devemos observar a quantidade itens que está na tabela . Pois é esse Table Access que é responsável por deixar a query com um tempo de execução alto (conforme a imagem de tempo de execução acima). Sempre quando houver um Table Access na sua consulta e a tabela a qual está ocorrendo esse Table Access possuir uma quantidade de registros superior a 2000 registros é interessante criar um índice para a tabela.

 

 

 

 

Imagem Plano Acesso Consulta SQL

 

 

Conclus√£o:

 

Devemos levar em consideração que para obtermos uma boa performance em nossas consultas, temos que garantir um relacionamento confiável, utilizando índices e evitando assim Table Access. Fica como uma dica que se a consulta está com um plano de execução sem ocorrer table acesss, mas está demorando obter o resultado, devido as tabelas possuir uma quantidade grande de itens, utilizamos então stored procedures no banco de dados. As stored procedures permitem manter o plano de execução (plano de acesso) em cache do banco. Desta forma ele é executado apartir do cachê do banco de dados, não gerando mais o plano de acesso e obtendo maior performance.

 

A dica para o próximo artigo construirmos uma stored procedures para banco de dados Sybase e Oracle, utilizando cursores e os conceitos de como garantir uma boa performance.

 

 

Disponibilidade da Ferramenta:

 

A ferramenta Oracle SQL Developer , utilizada nesse artigo pode ser obtida sua vers√£o de teste pelo link http://www.oracle.com/technology/getting-started/sqldev.html .