Eu sou um grande noob quando se trata de configurar o MySQL para desempenho. E, honestamente, não estou preocupado com o ajuste fino para extrair todo último desempenho do MySQL, mas sei que a coisa mais importante a fazer, que fornece alguns dos melhores resultados, é a configuração correta de caches / buffers.
Tentei simplificar as coisas usando apenas o InnoDB como um mecanismo de armazenamento. E eu tenho um servidor dedicado para MySQL. Possui 8 GB de RAM, como devo alocar isso para maximizar o desempenho? Gostaria de ajustar meu banco de dados inteiro na memória para obter o melhor desempenho. O banco de dados tem cerca de 5 GB. Isso é possível?
Quanta memória devo alocar para o cache da consulta? Quanto custa o buffer pool do InnoDB? Quanto custa o resto do computador (ou seja, processos não relacionados ao MySQL)? Etc.
Como não estou usando o MyISAM, não preciso colocar muita memória no cache de chaves correto?
IMHO você deve poder ir com
Isso representaria 62,5% da RAM com uma quantidade suficiente de RAM para o SO do servidor e memória para o DB Connections
@kvisle recomendado usando mysqltuner.pl. Esse script é excelente para julgar a quantidade de RAM a ser dedicada a join_buffer_size, sort_buffer_size, read_buffer_size e read_rnd_buffer_size. Esses 4 buffers somados são multiplicados por max_connections. Essa resposta é adicionada aos buffers estáticos (innodb_buffer_pool_size + key_buffer_size). As somas combinadas são relatadas. Se essa soma combinada exceder 80% da RAM, é quando você deve diminuir esses tamanhos de buffer. O mysqltuner.pl será muito útil nesse sentido.
Como todos os seus dados são do InnoDB, você pode tornar o key_buffer_size (buffer de cache de chaves para índices MyISAM) muito baixo (eu recomendo 64M).
Aqui está uma postagem que fiz no DBA StackExchange para calcular o tamanho recomendado de innodb_buffer_pool_size .
UPDATE 2011-10-15 19:55 EDT
Se você sabe que terá 5 GB de dados, minha primeira recomendação foi OK. No entanto, eu esqueci de adicionar uma coisa:
O tamanho do arquivo de log deve ser 25% do InnoDB Buffer Pool
UPDATE 2011-10-16 13:36 EDT
A regra de 25% baseia-se estritamente no uso de dois arquivos de log. Embora seja possível usar vários arquivos de log do innodb, dois geralmente funcionam melhor.
Outros expressaram usando 25%
No entanto, com toda a justiça, alguém da empresa InnoBase Oy original expressou não usar a regra de 25% por ter um maior pool de buffers do InnoDB .
Naturalmente, a regra de 25% não pode funcionar quando há grandes quantidades de RAM. De fato, o maior tamanho innodb_log_file_size permitido usando apenas 2 arquivos de log é 2047M, pois o tamanho combinado do arquivo de log deve ser menor que 4G (4096M)
CASO EM PONTO: Um dos clientes de meu empregador tem um servidor de banco de dados com 192 GB de RAM. Não há como ter arquivos de log 48G. Eu simplesmente uso o tamanho máximo do arquivo para um arquivo de log do innodb, 2047M. O comentário do @ Kvisle na minha resposta simplesmente fornece um link informando que você não precisa se limitar a dois arquivos de log. Se você tiver N arquivos de log, eles não poderão totalizar 4G. Minha regra de 25% é apenas em um mundo perfeito (DB Server com 8 GB ou menos).
fonte