Embora uma análise completa seja uma tarefa complexa e difícil, posso sugerir algumas áreas a partir das informações que você forneceu e dos avisos no sintonizador.
1) Você tem 32 GB de RAM, mas está usando apenas 14 GB para o MySQL em uma máquina dedicada. Por que não dar mais? É sugerido que 75% da RAM deve ser usada pelo MySQL em um host dedicado (innodb_buffer_pool_size), mas você deve verificar top, vmstat ou qualquer monitoramento de longo prazo que você tenha primeiro para garantir que há headroom para outros serviços ou eventos ocasionais como backups. Nota O Linux sempre se parece com o "esgotamento da RAM" porque ele usa dinamicamente qualquer memória RAM extra para buffers e cache - como mostra o exemplo.
2) innodb_flush_method é um fator de grande desempenho, sua configuração é comentada, por isso não posso saber o valor real (padrão). Verifique as variáveis do servidor para ver o que é. Mas, mudar isso tem um grande impacto na sua integridade no caso de uma interrupção.
3) Você tem muitas tabelas fragmentadas. Isso pode levar à perda de desempenho - se eles forem altamente fragmentados. Existem muitos outros posts [1] que discutem como encontrar tabelas fragmentadas, e se a desfragmentação é necessária, mas novamente é um pouco complexo com diferentes mecanismos de armazenamento e tabela-por-arquivo, etc. Para desfragmentá-los, você pode usar otimizar ou alterar para reconstruir a tabela (é claro que eles bloquearão as tabelas, portanto, é necessário garantir que seja rápido, praticando ou organizando uma interrupção).
1 [ Como encontrar e corrigir tabelas MySQL fragmentadas
4) "Junções realizadas sem índices" - este poderia ser o seu maior problema, embora o 131 não pareça muito alto.
Qualquer consulta que não / não pode usar um índice deve verificar cada registro (varredura de tabela) que é lento para tabelas maiores. Se você não tiver escrito as consultas por si mesmo (por exemplo, o uso desse produto Pretashop), talvez não consiga trabalhar nesse aspecto.
No entanto, para resolver isso, você precisa encontrar as consultas, analisá-las e, em seguida, adicionar índices de acordo. Para encontrar as consultas eu começaria no log de consultas lentas: você não tem muitas consultas lentas, então eu diria que o limite lento está alto demais? Então, se você puder diminuir isso, comece a escolher as consultas lentas e analisá-las. Usando o comando EXPLAIN, você deve conseguir ver como os JOINS estão faltando índices (embora o entendimento de EXPLAIN seja outro tópico inteiro). A adição de índices é simples, mas também tem seus prós e contras (por exemplo, inserções podem ficar mais lentas, muitos índices podem afetar adversamente o desempenho), além de o processo de indexação bloquear a tabela por um tempo.
Também há problemas nas métricas de buffer, mas isso está fora do meu conhecimento (isso é o que me levou a essa pergunta - eu tenho o mesmo problema de eficiência de log de gravação que ainda não entendi).