Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Diferença no tempo necessário para inserir registros InnoDB/MyISAM


Não está claro quais configurações de durabilidade você ativou no MyISAM ou Innodb, nem se você está usando inserções de linha única ou inserções em lote em ambos os casos.

Se você estiver usando inserções de linha única, não estiver usando transações e tiver a durabilidade habilitada (a configuração padrão no InnoDB), provavelmente verá o desempenho do InnoDB severamente limitado pelo requisito de confirmar cada transação no armazenamento durável ( ou seja, disco) após cada inserção de linha.

O MyISAM não tem esse problema, porque não é durável de qualquer maneira, ou seja, se a máquina travar, você tem mais ou menos garantia de perder alguns dados gravados recentemente que o banco de dados afirmou anteriormente que foram gravados com sucesso (se não a tabela inteira!).

Se você deseja um desempenho de inserção decente, use inserções em lote e/ou transações, caso contrário, você está apenas medindo a velocidade de uma gravação seguida por um fsync(), que (em um controlador RAID sem bateria em mídia magnética rotacional) é apenas a velocidade do seu disco girando.

Portanto, a razão pela qual o innodb é tão consistente é que você está medindo a velocidade de rotação do seu disco.

Dito isto, se você tiver um servidor ocupado, você definitivamente, absolutamente, deseja usar um controlador RAID com bateria, então você pode obter um desempenho decente de confirmação de transação E durabilidade adequada (assumindo que a energia não falha por mais tempo do que a bateria dura, e o servidor não explode etc).