Tenha em mente que o MyISAM não armazena em cache os dados do MyISAM. Apenas caches índices MyISAM.
O MyISAM Key Cache (dimensionado por key_buffer_size ) tem um tamanho máximo de 4 GB em sistemas de 32 bits. Você pode tornar o MyISAM Key Caches maior em sistemas de 64 bits.
Aqui está algo que pode ajudá-lo se você precisar armazenar em cache todo o arquivo .MYI:
Tente usar um MyISAM Key Cache dedicado.
Por exemplo, digamos que você tenha uma tabela MyISAM chamada mydb.mytable cujo arquivo .MYI seja 34 GB.
Veja como você configura um cache de chaves dedicado apenas para essa tabela:
SET GLOBAL my_dedicate_keycache.key_buffer_size = 1024 * 1024 * 1024 * 34;
CACHE INDEX mydb.mytable INTO my_dedicate_keycache;
LOAD INDEX INTO CACHE mydb.mytable;
Este é um arquivo tão grande. Como você gostaria de carregá-lo quando o mysql inicia?
Crie um arquivo chamado /var/lib/mysql/startup_stuff.sql
cd /var/lib/mysql
echo "SET GLOBAL my_dedicate_keycache.key_buffer_size = 1024 * 1024 * 1024 * 34;" > startup_stuff.sql
echo "CACHE INDEX mydb.mytable INTO my_dedicate_keycache;" >> startup_stuff.sql
echo "LOAD INDEX INTO CACHE mydb.mytable;" >> startup_stuff.sql
Em seguida, adicione isso ao /etc/my.cnf
[mysqld]
init_file=/var/lib/mysql/startup_stuff.sql
Finalmente, reinicie o mysql
service mysql restart