Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschied in der erforderlichen Zeit zum Einfügen von InnoDB/MyISAM-Datensätzen

Es ist unklar, welche Haltbarkeitseinstellungen Sie in MyISAM oder Innodb aktiviert haben und ob Sie in beiden Fällen Einzeilen-Einfügungen oder Batch-Einfügungen verwenden.

Wenn Sie einzeilige Einfügungen verwenden, keine Transaktionen verwenden und Dauerhaftigkeit aktiviert haben (die Standardeinstellung in InnoDB), wird die Leistung von InnoDB wahrscheinlich stark eingeschränkt, da jede Transaktion dauerhaft gespeichert werden muss ( d.h. Disc) nach jeder Zeile einfügen.

MyISAM hat kein solches Problem, weil es ohnehin nicht dauerhaft ist, d.h. wenn die Maschine abstürzt, werden Sie mehr oder weniger garantiert einige kürzlich geschriebene Daten verlieren, von denen die Datenbank zuvor behauptet hatte, dass sie erfolgreich geschrieben wurden (wenn nicht die ganze Tabelle!).

Wenn Sie eine anständige Insert-Leistung wünschen, verwenden Sie Batch-Inserts und / oder Transaktionen. Andernfalls messen Sie nur die Geschwindigkeit eines Schreibvorgangs, gefolgt von einem fsync (), was (auf einem nicht batteriegestützten RAID-Controller auf rotierenden magnetischen Medien) der Fall ist nur die Geschwindigkeit, mit der sich Ihre Disc dreht.

Der Grund, warum innodb so konsistent ist, ist, dass Sie die Drehgeschwindigkeit Ihrer Disc messen.

Wenn Sie jedoch einen ausgelasteten Server haben, möchten Sie auf jeden Fall einen batteriegestützten RAID-Controller verwenden, dann können Sie eine anständige Transaktionsleistung UND eine angemessene Haltbarkeit erreichen (vorausgesetzt, die Stromversorgung fällt nicht länger aus, als die Batterie hält, und der Server explodiert nicht etc).