Desempenho de Banco de Dados: a Técnica de Otimização com Tuning

Rodrigo Picini

Pós-Graduação de Banco de Dados e Business Intelligence

UNIANCHIETA – Centro Universitário Anchieta

Jundiaí, SP

 

Prof. Dr. Juliano Schimiguel

Pós-Graduação de Banco de Dados e Business Intelligence

UNIANCHIETA – Centro Universitário Anchieta

Jundiaí, SP

 

Introdução

Atualmente o desempenho de um banco de dados (BD) é um fator que determina efetivamente sua disponibilidade. O principal objetivo deste artigo é fornecer suporte ao DBA através de mecanismos que simplifique a análise de desempenho em BD, transformando uma tarefa de alto custo e complexidade em um processo muito mais simples e rápido. Dentre todos os problemas estão consumo de CPU, uma utilização não eficaz de comandos SQL (linguagem de consulta estruturada), bloqueios, esperas e atividade de disco. Para resolver esses problemas vem se tornando cada vez mais comum as praticas de otimização chamada de Tuning ou Sintonia. A tradução literal de ‘tuning’ seria sintonia ou ajuste de alguma coisa para que funcione melhor. Um SGBD é um produto de software sofisticado permitindo vários ajustes. Sua flexibilidade permite você fazer pequenos ajustes que afetam a performance do banco de dados.

Uma metodologia bem planejada é a chave do sucesso para realizar ‘tuning’ de performance. Para obter melhores resultados, os ajustes devem ser feitos durante a fase de projeto você consegue assim o máximo de benefício por um baixo custo.

Desenvolvimento

Para começarmos a trabalhar com performance é importante salientarmos que:

1-    Antes de mexer com o banco, devemos primeiro verificar possiveis problemas causado por software ou hardware, muitas vezes o hardware não é adequado ou a aplicação não possui um bom fluxograma.

 

·         60% dos problemas são relacionados ao mau uso de expressões SQL.

·         20% dos problemas são relacionados à má modelagem do BD.

·         10% dos problemas são relacionados à má configuração do SGDB.

·         10% dos problemas são relacionados à má configuração do S.O.

2-    Devemos ter um enfoque mais amplo de todas as partes de um sistema (Hardware, Sistema Operacional, Rede, e alguns dos SGBD existentes no mercado:

·         SQL Server (Microsoft Corporate), Oracle (Oracle Corporation)

·         Sysbase (Sysbase Inc)

·         IBM DB2

·         PostgreSQL

·         MySQL

·         Entre outros...

E porque não citar tambem o conhecimento da propria aplicação, Pois a baixa performance pode não estar ligada diretamente ao Banco e sim a outros componentes que influenciaram a performance do BD.

3-    As alterações devem ser feitas ao poucos, divididas e analisadas verificando sempre os resultados um de cada vez, Pois modificando varios procedimentos ao mesmo tempo corremos o risco de que caso suja algum imprevisto, termos facilidade em repar o erro.

4-    De acordo com Craig Mullins[2], quase 80% dos problemas de performance em banco de dados são causados por códigos SQL mal elaborados.

5-    Tuning é coisa seria, e um parametro mal configurado, pode onerar ou até mesmo parar o banco de dados. Dentre os principais temos:

·         Ajuste de Alocação de Memória

Alocação apropirada de recursos de memória para as estruturas do SGBD pode trazer efeitos posistivos na performance. A alocação devida de recursos de memória melhoram a perfomance do cache, reduzindo a paginação, definindo corretamente o buffer do Banco de Dados (shared_pool, buffer cache, log buffer, etc.).

·         Ajuste dos caminhos de acessos

A base de dados tem que encontrar os dados em ordem para retorná-lo para o usuário realizar a pesquiza. A chave para afinar as pesquisas é manter os registros e os indices da base de dados contiguos

·         Ajustes de I/O  e Estrutura Física:

I/O de disco tende a reduzir a performance de várias aplicações de software. O ajuste de I/O e estrutura fisíca envolve a distribuição de dados em discos diferentes , evitando assim a contenção de dados

·         Ajustes das Plataformas:

Monitore e defina com cuidado os parâmetros de CPU, I/O e memória de forma a melhorar a performance do Banco. Pois conforme a versão do gerenciado para um determinado sistema operacional pode haver parâmetros diferentes de ajustes.

·         Ajustes da Topologia de Acesso

Depois dos ajustes referentes aos bancos de dados e plataformas operacionais, será necessário realizar ajustes na topologia de acesso as aplicações para se obter o desempenho desejado necessário para a camada cliente ( aplicações com estrututras em 3 camadas)

6-    Aplicações diferentes, Web, OLTP ou DW requerem atenções diferentes.

Conclusões

Boas Práticas devem ser adquiridas para um melhor desenvolvimento de aplicações, onde muitas delas devem ser feitas na parte inicial do sistema. Uma boa modelagem já prevendo um grande crescimento da base de acesso e concorrência, é um dos principais itens para uma boa performance, de preferências a padrões SQL/ISO(2008). O intuito desse artigo não é necessariamente prover todas as informações necessárias para que essas técnicas de desempenho sejam aplicadas, mais sim, fornecer um mínimo de noção da grandeza de toda essa metodologia, e dos seus principais causadores.

Refêrencias

[1] Ikematu S.R. (2007). Realizando Tuning na Base de Aplicação [on-line]. Disponível em: http://www.pr.gov.br/batebyte/edicoes/2000/bb97/tuning.htm. Ultimo Acesso 19.11.2008

 [2] MULLINS, Craig S. (2005). SQL Performance Tuning Basics [on-line]. Disponível em: http://www.craigsmullins.com/zjdp_017.htm. Ultimo acesso 19.11.2008

 [3] COUTO, Eder (2006). Aumentando a performance da aplicação através da otimização de SQL [on-line]. Disponível em: http://imasters.uol.com.br/artigo/4055. Ultimo acesso 01.12.2008