Eu li muitas documentações, incluindo percona e documentação do MariaDB, onde eles recomendam configurar innodb_buffer_pool_size para 70-80% da RAM. Minha pergunta é, isso é RAM total ou RAM disponível? Por exemplo, quando executo free -m no meu CentOS-6.5, recebo o seguinte:
[root@master5 ~]# free -m
total used free shared buffers cached
Mem: 19991 999 10992 0 38 92
-/+ buffers/cache: 867 19123
Swap: 1999 0 1999
Então é 75-80% de 19991 ou de 10992?
Total, mas lembre-se que é apenas uma regra de ouro. Use o bom senso ao definir o valor. O InnoDB gosta do máximo de memória possível, mas há algumas coisas a considerar:
1) Certifique-se de que haja RAM suficiente para tudo o que precisa ser executado no servidor
2) Lembre-se de que o objetivo do buffer pool do InnoDB é lidar com o conjunto de trabalho normal de seus dados. Qual é o tamanho total do seu banco de dados, incluindo algum fator de crescimento? Não há necessidade real de definir o buffer pool muito mais do que isso, mesmo se você tiver a RAM. Mas seu conjunto de dados de trabalho (o que é usado nas atividades do dia-a-dia) geralmente é menor que o tamanho total do banco de dados. Quanto ele realmente precisa manter na RAM para obter o melhor desempenho?