Banco de Dados - Oracle
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.
por Flavio Goncalves AraujoAbaixo 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:
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 consultar 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
Esse tempo destacado foi o tempo gasto de retorno da consulta no banco, apartir 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.
Imagem Opção de Executar Plano Acesso
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 conforme imagem abaixo, 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.
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 nossa consultas, temos que garantir um relacionamento confiável, utilizando índices, evitando assim Table Access . Fica com 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 permite 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.
Fica como 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.