Mysql
 sql >> Database >  >> RDS >> Mysql

Differenza nel tempo necessario per inserire i record InnoDB/MyISAM

Non è chiaro quali impostazioni di durabilità hai abilitato in MyISAM o Innodb, né se stai utilizzando inserti a riga singola o inserti batch in entrambi i casi.

Se stai utilizzando inserimenti a riga singola, non stai utilizzando transazioni e hai la durabilità abilitata (l'impostazione predefinita in InnoDB), è probabile che le prestazioni di InnoDB siano fortemente limitate dal requisito di impegnare ogni transazione in una memoria durevole ( cioè disco) dopo ogni inserimento di riga.

MyISAM non ha questo problema, perché non è comunque durevole, ad es. se la macchina si arresta in modo anomalo, hai più o meno la garanzia di perdere alcuni dati scritti di recente che il database aveva precedentemente affermato di essere stati scritti correttamente (se non l'intera tabella!).

Se vuoi prestazioni di inserimento decenti, usa inserimenti batch e/o transazioni, altrimenti stai solo misurando la velocità di una scrittura seguita da un fsync(), che (su un controller RAID senza batteria su supporto magnetico rotazionale) è solo la velocità di rotazione del tuo disco.

Quindi il motivo per cui innodb è così coerente è che stai misurando la velocità di rotazione del tuo disco.

Detto questo, se si dispone di un server occupato, si desidera assolutamente, assolutamente, utilizzare un controller RAID con batteria tampone, è possibile ottenere prestazioni di commit delle transazioni decenti E una durata adeguata (supponendo che l'alimentazione non si interrompa più a lungo della durata della batteria, e il server non esplode ecc).