OTIMIZAÇÃO E PERFORMANCE DE BANCO DE DADOS UTILIZANDO SQL TUNING Jéssica Correa dos Santos¹, Alexandre Paulino Sierra da Silva¹ ¹Universidade Paranaense (Unipar) Paranavai-PR-Brasil [email protected], [email protected] Resumo. Este artigo descreve técnicas para otimização de banco de dados, concentrado especificamente na utilização do Tuning. O Tuning refere-se ao conceito de impor mudanças e aplicar idéias para otimizar o desempenho na recuperação ou atualização de dados, quando seguidas corretamente as etapas do otimizador garantem um ótimo desempenho para a aplicação. 1. Introdução Com o aumento na demanda e da complexibilidade dos sistemas de informação, cresce também a procura por Sistemas de Gerenciamento Banco de Dados seguros e com alto desempenho, o desempenho é medido pelo tempo de resposta das consultas, ou seja, quanto mais rápido for a busca melhor seu desempenho. O baixo desempenho de um banco de dados nem sempre é aceitável pelos usuários, pois a lentidão ou indisponibilidade de informação pode gerar em prejuízos significativos. A otimização de SQL também conhecida como Tuning, tem a finalidade de ajustar as consultas, para que elas tenham uma boa performance garantindo o melhor desempenho possível. (Souza, 2009) Mesmo em um banco de dados bem projetado pode ocorrer problemas de performance se a escrita dos comandos SQL for mal elaborada. Segundo Mullins (1999), cerca de 80% dos problemas de desempenho dos bancos de dados são causados por códigos SQL mal elaborados. O objetivo desse trabalho é uma revisão bibliográfica sobre otimização, concentrando especificamente no tema Tuning, serão apresentados alguns fatores essenciais para garantir o melhorias na performance e no desempenho da aplicação, também será mostrado os passos do Tuning. 2. Otimização de banco de dados A otimização consiste em fornecer a informação ao usuário com o menor tempo possível, ou seja, encontrar um caminho mais eficiente de processar a mesma requisição. (Couto, 2006) Segundo Date (2004) a otimização representa um desafio para os sistemas de banco de dados relacionais, se o sistema espera atingir um desempenho aceitável. A vantagem não está apenas no fato que os usuários não precisam se preocupar em formular consultas para tirar o melhor desempenho do sistema, mas na possibilidade do otimizador sair-se melhor que o usuário. De acordo com as contribuições de Souza (2009) o otimizador tem a finalidade geral de escolher uma estratégia eficaz para avaliar determinada expressão relacional. 2.1. Otimização de SQL As intruções SQL mal elaboradas, podem causar probelmas de performance em uma aplicação, afetando o desempenho do banco de dados. O que ocasiona a maioria desses problemas é a forma com que os desenvolvedores escrevem as consultas SQL, eles focam no resultado e não no desempenho. A otimização de SQL tem como objetivo produzir a escolha mais eficiente para execução dos comandos SQL, o que acarreta em um ótimo desempenho para a aplicação. (Gonçalves, 2006) O Tuning de SQL tem o objetivo de auxiliar na escrita e execução adequada de comandos SQL, permitindo que a manipulação seja realizada com maior desempenho e melhorias na performance. Na escrita de comandos SQL ou na otimização de um comando já existente, o Tuning de aplicação pode melhorar o tempo de resposta da CPU, reduzir o I/O e os recursos gastos com memória, garantindo maior desempenho. 3. Tuning O Tuning significa sintonia ou ajuste para que algo funcione melhor. Ele da suporte ao Administrador do Banco de Dados (DBA), fazendo ajustes nas aplicações que melhoram a performance do banco de dados (Ikematu 2009). Também conhecido como Diagnostics e Tuning, o tuning trata da necessidade e da importância de um diagnóstico claro e preciso. Depois de diagnosticar o problema vem o ajuste ou tuning, para que o banco de dados tenha um ótimo desempenho. (Proni 2010). Segundo Proni 2010 o SQL Tuning tem o papel de melhorar o desempenho das aplicações executadas. Nos processos computacionais o desempenho é medido pela velocidade, ou seja, quanto mais rápido melhor o desempenho. A velocidade então é medida no tempo de resposta das aplicações. “A fase de tuning de um banco de dados é um processo de refinamento que envolve modificações em varios aspectos desse BD, e que vão desde mudanças nos conceitos apreendidos nos diagramas entidade relacionamento (ER) até a troca de hardware, passando pela configuracão dos softwares que executam nesse sistema.” (Tramontina, 2008) 3.1. Utilização do Tuning Segundo Ikematu (2009), para se obter melhores resultados, ou seja, melhor performance do BD, o ajuste ou tuning deve ser feito durante a fase de projeto. Pois com o ajuste no projeto pode-se tirar o máximo de benefícios com um custo mais baixo. Se não utilizado corretamente na fase de projeto, ou seja, se os usuários reclamarem sobre tempo de respostas ruins, geralmente é tarde para usar estratégias mais eficientes do tuning. Com o sistema bem projetado, pode-se obter vantagens completas de melhorias de performance e desempenho do banco de dados. Porém mesmo um sistema bem projetado pode degradar-se com o uso. A vista disso o tuning é uma parte importante da manutenção do sistema. “Foque seus esforços de ajuste em comandos onde os benefícios de ajuste excedem o custo do ajuste. Em complementação a políticas e procedimentos para análise e revisão de SQL podem ser usadas ferramentas automatizadas para minimizar o volume de códigos SQL ruins. Use ferramentas tais como TKPROF, SQL Trace Facility e outras para encontrar o problema. Encontre os comandos que consomem mais recursos e/ou são executados mais frequentemente. Não adianta ajustar comandos SQL para projetos ineficientes da aplicação.” (Ikematu 2009) O Tuning de SQL é apenas uma parte de um conjunto de fatores para a otimização do ambiente de banco de dados. Alguns fatores são essências para se obter melhorias na performance e no desempenho da aplicação, a figura 1 demonstra os fatores essências para o utilização adequada do Tuning. Uma metodologia recomendada para tuning deveria seguir os seguintes passos: (Ikematu 2009) Abaixo a figura demonstra os passos do tuning. Fonte Ikematu 2009 Visualizando a figura 1, entende-se que o tuning é um processo interativo, e que um passo depende do outro. Para se obter um melhor desempenho nas consultas, o ajuste deve ser feito em todas as etapas na elaboração do sistema. 4. Metodologia Para a realização deste trabalho foi feita uma pesquisa em artigos científicos e sites na internet e uma revisão bibliográfica. 5. Conclusões Este artigo demonstrou que a otimização usa técnicas que tende a melhorar o desempenho do banco de dados. Mas para que otimização traga aumento no desempenho, essas técnicas devem ser aplicadas corretamente. O SQL Tuning não trata apenas da otimização de consultas SQL, e sim da otimização de todas as fases do projeto de banco de dados. Se as fases do Tuning forem seguidas adquadamente o resultado será satisfatório. Garantindo assim sucesso no desempenho e na performance do banco de dados. Referências COUTO, Eder. Artigo: Aumentando a Performance da Aplicação Através da Otimização de SQL. iMasters 2006. Disponível em:< http://imasters.com.br/artigo/4055/bancodedados/aumentando_a_performance_da_aplic acao_atraves_da_otimizacao_de_sql/> Acesso em: 25/07/2013. DATE, C. J., Introdução a Sistemas de Banco de Dados. 8. ed. Rio de Janeiro: Campus 2004. GONÇALVES, E. (2006) “Tuning de SQL: a importância da otimização em comandos SQL”. SQL Magazine, n. 31, p.64-66. IKEMATU, Ricardo Shoiti. Artigo: “Realizando tuning na base de aplicações”. Celepar 2009 disponível em: <http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1592> Acesso em: 25/07/2013. MULLINS, Craig S. The Most Important Thing is Performance. 1999. Disponível em <http://www.craigsmullins.com/cnr_perf.htm >. Acesso em: 20/05/2013. PORNI, Ricardo Portilho, Artigo SQL Magazine: Oracle Benchmark: Linux x Windows. Disponivel <http://www.devmedia.com.br/oracle-benchmark-linux-x-windows-artigorevista-sql-magazine-87/21045> Acesso em: 05/07/2013 SOUZA, Fernando de Assis; ALONSO, Alana Katiuscia Pires Bosso; SANTOS, Rodrigo, Artigo Científico: Avaliação das Principais Técnicas de Desempenho em Banco de Dados Oracle Através da Otimização de SQL. Policamp, 2009. Disponível em:<http://scholar.googleusercontent.com/scholar?q=cache:dyRs1oU8ZlIJ:scholar.goog le.com/&hl=pt-PT&as_sdt=0,5> TRAMONTINA, G. B. Database Tuning: Configurando o Interbase e o PostgresSQL. Campinas, 2008. Disponivel em <http://www.ic.unicamp.br/~geovane/mo410091/Ch20-ConfigInterbasePosgres-art.pdf> Acesso em: 23/07/2013.