Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Práticas recomendadas de otimização de banco de dados MySQL


A "melhor prática" é:
  1. Meça o desempenho, isolando o subsistema relevante o melhor que puder.
  2. Identifique a causa raiz do gargalo. Você está vinculado à E/S? Limite de CPU? Limite de memória? Aguardando bloqueios?
  3. Faça alterações para aliviar a causa raiz que você descobriu.
  4. Meça novamente para demonstrar que você corrigiu o gargalo e em quanto .
  5. Vá para a etapa 2 e repita conforme necessário até que o sistema funcione rápido o suficiente.

Assine o feed RSS em http://www.mysqlperformanceblog.com e leia seus artigos históricos também. Esse é um recurso extremamente útil para a sabedoria relacionada ao desempenho. Por exemplo, você perguntou sobre InnoDB vs. MyISAM. A conclusão deles:o InnoDB tem um desempenho ~30% maior do que o MyISAM em média. Embora também existam alguns cenários de uso em que o MyISAM supera o InnoDB.

Os autores desse blog também são coautores de "High Performance MySQL", o livro mencionado por @Andrew Barnett.

Re comentário de @ʞɔıu:Como saber se você é limitado por E/S versus limitado por CPU versus limitado por memória depende da plataforma. O sistema operacional pode oferecer ferramentas como ps, iostat, vmstat ou top. Ou talvez você precise obter uma ferramenta de terceiros se o seu sistema operacional não fornecer uma.

Basicamente, qualquer recurso que esteja atrelado a 100% de utilização/saturação provavelmente será seu gargalo. Se a carga da CPU for baixa, mas a carga de E/S estiver no máximo para o hardware, você estará vinculado à E/S.

Isso é apenas um ponto de dados, no entanto. O remédio também pode depender de outros fatores. Por exemplo, uma consulta SQL complexa pode estar fazendo uma classificação de arquivos e isso mantém a E/S ocupada. Você deve lançar hardware mais/mais rápido nele ou deve redesenhar a consulta para evitar a classificação de arquivos?

Existem muitos fatores para resumir em uma postagem do StackOverflow, e o fato de existirem muitos livros sobre o assunto suporta isso. Manter os bancos de dados operando de forma eficiente e fazendo o melhor uso dos recursos é um trabalho em tempo integral que exige habilidades especializadas e estudo constante.

Jeff Atwood acabou de escrever um bom artigo de blog sobre como encontrar gargalos em um sistema: