Olá pessoal,
No artigo de hoje vou comentar sobre o que é Tuning e como fazer Tuning em um Banco de Dados Oracle, passando alguns conceitos básicos e uma visão geral sobre o assunto.
Tuning é um termo que desperta um interesse cada vez maior nos profissionais de TI, devido aos fatos que estão descritos abaixo:
- Aumento do legado de sistemas corporativos (ERPs, GEDs etc.) e sistemas web;
- Aumento da quantidade de usuários de BDs;
- Aumento da quantidade de dados.
Antes de começar, a 1ª coisa que o profissional de TI que trabalha com Tuning tem que aprender, é como escrever corretamente esta palavra. Muita gente escreve Tuning de forma errada, eu mesmo quando comecei a estudar o assunto, cometia este erro.
Tuning contém somente 2 Ns, portanto, escrever essa palavra contendo 3 Ns (Tunning) não é correto! Tuning, na língua inglesa, é um substantivo derivado do verbo tune, e o erro na sua escrita ocorre por causa de uma confusão do brasileiro ao aplicar o gerúndio (Present Participle) no verbo tune. Para entender melhor como fazemos essa confusão, sugiro a leitura do artigo Why do some words have double consonants while others have only one?.
Em TI, Tuning refere-se basicamente ao conceito de propor e aplicar mudanças visando otimizar o desempenho na recuperação ou atualização de dados. Em curtas palavras, Tuning (em TI) é sinônimo de otimização. Atualmente existem muitas técnicas e dicas de tuning que podem ser aplicadas para otimizar os sistemas corporativos, compreendendo desde o nível do sistema operacional até o nível do seu código-fonte. Para fazer um bom trabalho de Tuning, é necessário executar criteriosamente os seguintes processos:
- Entender o problema;
- Elaborar o diagnóstico;
- Aplicar as dicas e técnicas de otimização (que se aplicam ao diagnóstico elaborado).
O objetivo principal do trabalho de tuning é minimizar o tempo de resposta e recuperação dos dados das aplicações. Em um Banco de Dados, os 3 tipos de atividades de tuning que podem ser realizadas, são:
1- Planejamento de performance:
- Definição e configuração do ambiente em que o BD será instalado, considerando-se os seguintes itens: Hardware, Software, Sistema Operacional e Infraestrutura de rede.
2- Tuning de instância e BD:
- Ajuste de parâmetros e configurações do BD (atividades que fazem parte do trabalho de um DBA).
3- SQL Tuning:
- Otimização de instruções SQL.
Para desenvolver bem o 1º tipo de atividade, não há um treinamento específico. É necessário estudar e pesquisar bastante sobre o assunto. Um ponto muito importante é que a maior parte dos problemas de performance estão em instruções SQL ruins (ver item Application na Imagem 1). Para adquirir os conhecimentos necessários p/ realizar o 2º tipo de atividade, recomendo o treinamento Performance Tuning for Oracle DBAs. Para adquirir os conhecimentos do 3º tipo de atividade, recomendo o treinamento SQL Tuning em Bancos de Dados Oracle.
Outros pontos que eu acho muito importante comentar para quem está começando nessa área, é que existem muitas dicas e técnicas de Tuning e que não existe uma “receita de tuning” que podemos aplicar em qualquer BD e resolver os seus problemas de lentidão. Para fazer um bom trabalho de Tuning temos que saber usar as ferramentas disponíveis (Ex.: AWR, Statspack, SQL Traces, Visões de performance dinâmicas, Plano de execução etc.), elaborar um bom diagnóstico, e conhecer os recursos do BD, dicas e técnicas que podemos usar, de acordo com o problema encontrado e características da aplicação, como por exemplo:
- Quantidade de usuários concorrentes;
- Se a aplicação realiza muitas escritas ou faz somente leituras;
- Quantidade de dados que a aplicação irá processar.
O trabalho de um profissional que atua em Tuning é muito parecido com o trabalho de um profissional de Medicina. Quando você tem alguma doença e vai ao Médico, ele normalmente lhe pede para fazer alguns exames e retornar à consulta quando eles estiverem prontos.
Ao retornar, ele analisa os exames para identificar o seu problema, elabora um diagnóstico e te dá algum remédio, tratamento ou recomenda alguma cirurgia.
Fazendo uma analogia com o trabalho de Tuning em um Banco de Dados que eu já comentei, você notou alguma semelhança?
[]s