Tenho uma série de tarefas que executo no MYSQL 8 todos os dias. Na verdade, essas tarefas são executadas a partir de um aplicativo vb.net que faz interface com o MYSQL usando 8 conexões por vez. Essas tarefas são uma série de junções complicadas, seleções e criação de tabelas. Esses computadores são designados exclusivamente para sua duração. Eu os uso em meu laptop há cerca de 6 meses.
Especificações do laptop: 16 GB de RAM DDR3, processador Intel i5-835OU de 1,7 GHz, 4 núcleos, disco rígido SSD - Tempo para concluir tarefas 7.981 segundos - uso médio durante a tarefa 75% CPU, 43% Mem, 100% disco
Recentemente, comprei um mini pc barato
Especificações do Mini PC 1: 16 GB de RAM DDR4, processador N100 de 3,4 GHZ, 4 núcleos, disco rígido SSD - Tempo para concluir tarefas 5532 segundos - uso médio durante a tarefa 100% CPU, 50% Mem, 81% disco
Fiquei tão agradavelmente surpreso com a atualização de velocidade que decidi comprar o mini pc atualizado.
Especificações do Mini PC 2: 32 GB de RAM DDR5, processador Ryzen_7 4,75 GHZ, 8 núcleos, disco rígido SSD - Tempo para concluir tarefas 9178 segundos - uso médio durante a tarefa 14% CPU, 19% Mem, 46% Disco
Como você pode ver, houve uma grande queda na velocidade com o PC atualizado. E parece que o PC atualizado nem está funcionando tanto assim.
Minha pergunta para você é esta: Existem configurações/maneiras de dedicar mais potência ao próprio MySQL? Meu computador parece ter todos os recursos para acelerar essas tarefas/consultas, mas não os está utilizando. O objetivo de adquirir este pc foi executar essas tarefas mais rapidamente. Existe uma maneira de dedicar todos/a maior parte dos recursos do computador ao MYSQL para aumentar a velocidade?
Obrigado.
Minha melhor resposta não foi na otimização do sistema, mas na otimização de consultas. Descobri que, ao reestruturar minhas consultas, poderia fazer com que utilizassem mais memória RAM e menos disco rígido. Isso aproveitou as atualizações de velocidade do PC2. No final, o PC2 agora completa as consultas em 649 segundos; cerca de 9 vezes mais rápido do que PC1 os concluía. Durante a consulta, o PC2 agora executa 100% da CPU, 77% da Mem e 21% do disco.
Originalmente, descobri que a criação de uma série de tabelas temporárias criava o melhor desempenho em meu laptop. A partir dessas tabelas temporárias, eu selecionaria os dados desejados dessas tabelas temporárias. Mas quando tive mais memória RAM disponível com o PC2, a velocidade melhorou muito para simplesmente extrair os dados diretamente das tabelas principais por meio de junções.
Exemplo Original - Minha estrutura ficou assim:
No meu laptop e PC1, esse foi o equilíbrio certo entre uso de RAM e ROM.
Novo Exemplo - Mudei minha estrutura para ficar assim:
Com o PC2 não havia um bom motivo para gravar tabelas temporárias no disco rígido quando havia bastante memória RAM para fazer o trabalho.
Portanto, meu resumo do que aprendi é o seguinte: dividir tabelas em tabelas temporárias menores pode ser muito útil quando você está com pouca memória RAM. Mas se você tiver RAM para evitar essas etapas extras, é muito mais rápido eliminá-las. Mas é um ato de equilíbrio. Às vezes você deseja etapas mais intermediárias e outras vezes é melhor ir direto.
Sugestões a serem consideradas para a seção PC1 my.ini [mysqld]
Muitas outras oportunidades de ajuste de desempenho estão disponíveis.
Visite nosso site para baixar nosso script utilitário gratuito para o script findfragtables.sql para reduzir data_free (free_space) em tabelas que estão superprovisionadas neste espaço. OPTIMIZE TABLE nome_tabela; para as tabelas identificadas.
Sugestões a serem consideradas para a seção PC2 my.ini [mysqld]
Existem muito mais oportunidades para melhorar o desempenho.