Eu iria com o MyISAM pelo InnoDB por três (3) razões principais
Razão # 1: o mecanismo de armazenamento MyISAM fornece mecanismos mais simples para melhorar o desempenho de leitura
As tabelas MyISAM são compostas por apenas três arquivos
- .frm (arquivo de formato)
- .MYD (arquivo de dados)
- .MYI (arquivo de índice)
Você pode ajustar tabelas MyISAM para leituras mais rápidas com uma simples alteração no formato de linha da tabela.
Por exemplo, as páginas 71-73 do livro projeto e ajuste do banco de dados MySQL recomendam fazer isso em um MyISAM tabela:
ALTER TABLE tblname ROW_FORMAT=Fixed;
Isso converterá todos os VARCHARs em CHARs internamente. Isso também tornará a tabela MyISAM cerca de 50% maior, mas terá um desempenho de leitura maior, porque o comprimento da string é mais rigidamente verificado com VARCHAR, enquanto o tamanho de um CHAR é fixo.
Como alternativa, você pode executar o myisampack em uma tabela MyISAM para reduzir o tamanho da tabela MyISAM e criar um novo formato somente leitura.
Estas são operações únicas que você pode executar em qualquer tabela MyISAM. Alterar o formato de linha em uma tabela InnoDB é um pouco inútil devido ao seu layout de índice em cluster (explicado na Razão # 3)
Razão # 2: o cache MyISAM é mais simples
MyISAM armazena apenas páginas de índice . O InnoDB armazena em cache dados e páginas de índice . Você pode assim configurar o cache de chaves do MyISAM menor que um InnoDB Buffer Pool.
Razão # 3: o InnoDB carrega muita bagagem para proteger os dados
O InnoDB apresenta recuperação de falhas na inicialização, mesmo que nada esteja errado (precaução)
O InnoDB sempre executa o MVCC em relação às linhas de dados . Isso cria uma faxina extra para uma casa que nunca fica confusa com INSERTs, UPDATEs ou DELETEs.
O InnoDB realiza pesquisas de índices duplas o tempo todo, principalmente ao usar índices não-UNIQUE. A razão pela qual isso acontece é devido a rowid interna do InnoDB index que está intimamente ligado ao índice clusterizado .
Você pode ignorar a inicialização do InnoDB com o seguinte em /etc/my.cnf
[mysqld]
skip-innodb
O MySQL irá assim reiniciar muito mais rapidamente. Você também pode excluir / var / lib / mysql / ibdata1, / var / lib / mysql / ib_logfile0 e / var / lib / mysql / ib_logfile1.
CAVEAT
Se os dados forem pequenos o suficiente, monte / var / lib / mysql em um disco RAM. Então, todas as apostas estão canceladas para comparar MyISAM ao InnoDB.