Estou fornecendo esta resposta como informação complementar à resposta de Rolando abaixo.
Antes do servidor estar em produção
Calcule innodb_buffer_pool_size com base nas maiores tabelas mais usadas pelo MySQL. Para identificar as maiores tabelas com base em seu tamanho no banco de dados, você pode usar este script:
select table_schema, table_name, round(data_length/1024/1024,2) as size_mb
from information_schema.tables where table_schema like 'my_database'
order by size_mb desc;
+--------------+-------------------------+---------+
| table_schema | table_name | size_mb |
+--------------+-------------------------+---------+
| heavybidder | user | 522.55|
| heavybidder | bid | 121.52|
| heavybidder | item_for_sale | 10.52|
| heavybidder | account_user | 5.02 |
| heavybidder | txn_log | 4.02 |
| heavybidder | category | 0.02 |
+--------------+-------------------------+---------+
Agora que sabemos quais tabelas são as maiores em nosso banco de dados, precisamos determinar quais são as mais usadas. Para fazer isso, eu usaria um programa de criação de perfil como o Jet Profiler (JP) para examinar quais tabelas estão sendo mais acessadas. O JP mostrará quais tabelas estão sendo acessadas com mais frequência. Aqui está uma captura de tela dessa seção no JP
Então, com isso em mente, agora eu sei que as tabelas de usuários e lances ocupam cerca de 640 MB de espaço em disco, elas são usadas com muita frequência de acordo com o JP e isso significa que o MySQL armazenará seus índices e dados no buffer pool como Rolando menciona abaixo em seus comentários.
Para garantir que o MySQL tivesse memória suficiente para armazenar dados para minhas tabelas maiores e mais frequentemente usadas, eu definiria innodb_buffer_pool_size em 640MB.
Existem algumas considerações adicionais, mas elas não se aplicam ao innodb_buffer_pool_size.
Este é um sistema de 32 bits ou 64 bits? Em um sistema de 32 bits, você está limitado a 4 GB, a menos que ative o PAE. No Windows, isso significa executar as edições Windows Enterprise ou Datacenter.
Quanta memória os outros processos em execução no seu sistema precisam? Em um servidor MySQL dedicado, deixarei entre 5% e 10% para o sistema operacional. No Windows, você pode usar o Process Explorer para analisar o uso da memória. No Linux, você possui sysstat, free, htop, top e vmstat.
O banco de dados é composto apenas de tabelas Innodb ou de uma mistura de Innodb e MyISAM? Se for uma mistura dos dois, reservarei memória para o key_cache, juntarei variáveis, cache de consultas, etc. Você poderá calcular posteriormente a taxa de acertos do MyISAM quando o servidor estiver em produção.
Após o servidor estar em produção
Qual é a taxa de acerto atual do Innodb?
1 - (innodb_buffer_pool_reads / innodb_buffer_pool_read_requests).
Qual é a taxa de acertos do cache de chaves
1 - (Key_reads / Key_read_requests)
Normalmente, tento obter a proporção o mais próximo possível de 100%.
Quão bem suas tabelas se encaixam no buffer pool
Você também pode ver como os dados da tabela se ajustam ao buffer_pool consultando este link, que fornece uma maneira de mostrar "quantas páginas há no buffer pool para uma determinada tabela (cnt), quantas estão sujas (sujas) e qual é a porcentagem de índice que cabe na memória (fit_pct). " Aplica-se apenas ao servidor Percona
http://www.mysqlperformanceblog.com/2010/12/09/how-well-does-your-table-fits-in-innodb-buffer-pool/