sql >> Database >  >> RDS >> Mysql

Verschil in benodigde tijd om InnoDB/MyISAM-records in te voegen

Het is onduidelijk welke duurzaamheidsinstellingen u hebt ingeschakeld in MyISAM of Innodb, en ook niet of u invoegingen met één rij of in beide gevallen batch-invoegingen gebruikt.

Als u invoegingen met één rij gebruikt, geen transacties gebruikt en duurzaamheid hebt ingeschakeld (de standaardinstelling in InnoDB), dan zult u waarschijnlijk de prestaties van InnoDB ernstig beperkt zien door de vereiste om elke transactie vast te leggen in duurzame opslag ( d.w.z. schijf) na het invoegen van elke rij.

MyISAM heeft zo'n probleem niet, omdat het sowieso niet duurzaam is, d.w.z. als de machine crasht, ben je min of meer gegarandeerd dat je recentelijk geschreven gegevens verliest waarvan de database eerder beweerde dat ze succesvol waren geschreven (zo niet de hele tabel!).

Als je fatsoenlijke insert-prestaties wilt, gebruik dan batch-inserts en/of transacties, anders meet je gewoon de snelheid van een schrijfactie gevolgd door een fsync(), die (op een RAID-controller zonder batterij op roterende magnetische media) is alleen de snelheid van uw schijf die ronddraait.

Dus de reden waarom innodb zo consistent is, is dat je de draaisnelheid van je schijf meet.

Dat gezegd hebbende, als je een drukke server hebt, wil je absoluut absoluut een RAID-controller met batterijvoeding gebruiken, dan kun je behoorlijke transactiecommitprestaties EN een goede duurzaamheid bereiken (ervan uitgaande dat de stroom niet langer uitvalt dan de batterij meegaat, en de server ontploft niet enz.).



  1. BLOB-afbeelding weergeven Laravel 4

  2. Hoe de maand op te maken in Romeinse cijfers in Oracle

  3. SQL - Verschil tussen COALESCE en ISNULL?

  4. Laatste x blogberichten - maar slechts één keer per gebruiker