Eu tenho que trabalhar em um projeto que teria uma tabela extra grande com bilhões de registros, mas apenas dois campos, um é id e outro é texto.
E o id seria definido como BIGINT e PK, então, se 8 + 2 (2 bytes extras para sobrecarga) bytes por linha forem levados para o índice, então, em meu cálculo, 64 GB de RAM devem ser suficientes para manter pelo menos 5 bilhões de índices de registros.
Mas é apenas um fator que estou considerando.
Você acha que existem outros fatores também que eu deveria considerar?
E o tamanho da RAM também pode ser aumentado, se necessário. E essa tabela seria a mesa mais ocupada com poucas gravações e muitas leituras.
Você precisa considerar o mecanismo de armazenamento que usará para seu projeto porque o cache do MySQL é diferente para cada mecanismo de armazenamento.
MyISAM armazena em cache apenas as páginas de índice. O InnoDB armazena dados em cache e páginas de índice.
Dado que você tem uma tabela com ids grandes, espero que esteja usando MyISAM.
Aqui está uma consulta para ajudá-lo a determinar o melhor key_buffer_size:
Isso fornecerá a configuração recomendada para o cache de chaves MyISAM (key_buffer_size), dado o seu conjunto de dados atual ( a consulta limitará a recomendação a 4G (4096M). Para sistemas operacionais de 32 bits, 4 GB é o limite. Para 64 bits, 8 GB.
ATUALIZAÇÃO 2011-09-16 14:49 EDT
Se você estiver usando o InnoDB, dimensionar o key_buffer_size não ajudará. InnoDB e MyISAM armazenam em cache de forma diferente .
Aqui está o mesmo tipo de consulta para dimensionar seu InnoDB Buffer Pool: