Páginas

11 de abr. de 2014

O que é Tuning?


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, SoftwareSistema 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, 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.

[]s


Referências:


6 comentários:

  1. Boa Noite,
    Parabé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.

    ResponderExcluir
    Respostas
    1. 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/.

      []s

      Excluir
  2. Fabio,

    Boa noite.

    Gostaria de adquirir o treinamento Tuning SQL como faço ?

    Obrigado

    Helber Marcondes

    ResponderExcluir
    Respostas
    1. Helber, acesse o link: http://www.fabioprado.net/p/sql-tuning.html.
      []s

      Excluir
  3. 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?

    ResponderExcluir
    Respostas
    1. Obrigado pelos comentários!

      Um 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

      Excluir