Eu não me preocuparia com o desempenho do aplicativo com 1 bilhão de linhas em uma máquina que possa manter os índices na memória. Se você é sério em alcançar 1 bilhão de linhas, você primeiro tem que fazer um pouco de matemática:
- Qual é o seu tamanho recorde e multiplique por 1 bilhão?
- Em seguida, você precisa calcular o tamanho dos índices (mais de um índice, suponho) e adicioná-lo.
- Você tem requisitos transacionais para os quais deseja ter bloqueio em nível de linha?
- Esta é uma tabela com acréscimo de peso ou uma tabela de leitura pesada?
Em seguida, vá para os requisitos de tempo de atividade do seu aplicativo.
- Como você vai fazer backup de linhas de 1B?
- Como você lidará com uma tabela de linhas 1B corrompida?
- Com que frequência você precisará executar uma OPTIMIZE TABLE?
- Como você lidará com uma alteração de esquema contra uma tabela de linhas de 1B? (Adicionar um índice em uma tabela de 35 milhões de linhas em uma caixa dual core de 2 GB com ram de 2 GB me levou 45 minutos recentemente.)
Eu me preocuparia mais com o ciclo de vida dos dados e com o gerenciamento de dados de um arquivo de várias gigabytes dessa magnitude antes de me preocupar com o desempenho. Com a replicação, você pode obter muito do desempenho. Manter os dados são e restaurar até mesmo de pequenos desastres (como corrupção induzida por ram ruim) é mais provável que você vá incomodá-lo primeiro.
Eu também gostaria de incentivá-lo a pegar a tabela que você tem - e adicionar 1B linhas de dados de teste a ele. Isso é extremamente perspicaz para observar o que acontece com o seu sistema. Execute alguns EXPLAINs em suas consultas em relação a este novo conjunto de dados enorme. Tempo quanto tempo leva para fazer backup e restaurar. Pode ser necessário ajustar alguns requisitos.
Este é um artigo interessante cerca de 1 bilhão de linhas no mysql.