Olá pessoal,
No artigo de hoje vou comentar sobre o que é Tuning e como "tunar" 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. A palavra tuning contém somente 2 Ns, portanto, escrevê-la com 3 Ns (Tunning) está errado! 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, compreendo-os 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:
1- Entender o problema;
2- Elaborar o diagnóstico;
3- Aplicar dicas e técnicas de otimização que se relacionam 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.
Otimização de instruções SQL.
Para desenvolver bem o 1º tipo de atividade, não há um treinamento específico, mas você verá alguns destes itens em um bom treinamento de Database Performance Tuning. Para se aprofundar é necessário estudar e pesquisar bastante sobre o assunto. Para adquirir os conhecimentos necessários p/ realizar o 2º tipo de atividade, recomendo o treinamento Database Performance Tuning. Para adquirir os conhecimentos do 3º tipo de atividade, recomendo o treinamento SQL Tuning em Bancos de Dados Oracle. Um ponto muito importante a ser ressaltado é que a maior parte dos problemas de performance estão em instruções SQL ruins (ver item Application na Imagem 1), portanto, dentro do 3º item.
Imagem 1 - Performance Gains from Tuning Fonte: Tuning When You Can’t Touch The Code, Michael R. Ault |
O ponto mais importante que eu costumo 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(s) aplicação(ões), como por exemplo:
- Quantidade de usuários concorrentes;
- Se ela faz muitas escritas ou somente leituras;
- Quantidade de dados que ela irá processar.
O trabalho de um profissional que atua com 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 pode te dar algum remédio, tratamento ou recomendar alguma cirurgia. Fazendo analogia com o trabalho de Tuning que eu já comentei, você notou alguma semelhança?
Para aprender mais sobre Tuning, recomendo que você participe de uma das próximas turmas dos meus treinamentos abaixo:
- SQL Tuning;
- Database Perfomance Tuning.
Para aprender mais sobre Tuning, recomendo que você participe de uma das próximas turmas dos meus treinamentos abaixo:
- SQL Tuning;
- Database Perfomance Tuning.
[]s
Referências:
Boa Noite,
ResponderExcluirParabéns pelo resumo bem detalhado e especifico estou cursando MYSQL na www.cursoadv.com.br e tenho algumas dificuldades sobre a partes de baco de dados sera que teria alguma orientação.
Nanner, obrigado pelos comentários. Se vc quer ajuda em MySQL, não sou a pessoa certa para lhe ajudar. Sugiro procurar ajuda com http://wagnerbianchi.com/blog/.
Excluir[]s
Fabio,
ResponderExcluirBoa noite.
Gostaria de adquirir o treinamento Tuning SQL como faço ?
Obrigado
Helber Marcondes
Helber, acesse o link: http://www.fabioprado.net/p/sql-tuning.html.
Excluir[]s
Olá Fabio, parabéns pelo seu excelente artigo! Para que possa ser realizado um bom trabalho de tuning, você acha que é fundamental para o DBA conhecer bem a arquitetura do banco e ter uma certa experiencia em administração ou qualquer dba junior já consegue ingressar nessa parte de tuning?
ResponderExcluirObrigado pelos comentários!
ExcluirUm Júnior pode até fazer algum trabalho de tuning, mas é muito mais difícil e arriscado. Para fazer um bom trabalho de tuning, sem grandes riscos, é recomendável conhecer bem a arquitetura do BD para evitar alguns efeitos indesejáveis que podem ocorrer após habilitar/usar algum determinado recurso. O Júnior ainda tem pouca experiência para fazer isso, mas pode quebrar o galho, desde que supervisionado por alguém com mais experiência e conhecimentos.
[]s