Det mesta av min tid ägnas åt att arbeta med mina klienter på den omfattande hälsokontrollen av databasprestanda . Det bästa med hälsokontrollengagemang är att jag får träffa många nya människor och dela med mig av många olika historier. Nyligen fick jag frågan av en av DBA:erna som också arbetar med MySQL tillsammans med SQL Server, vilken är min favoritmotor för MySQL – MyISAM eller InnoDB?
Jag tycker att det är en mycket intressant fråga att ställa under år 2019 eftersom jag tror att MySQL-teamet själva redan har fattat beslutet om detta sedan MySQL version 5.5. De har redan valt InnoDB som standardmotor sedan MySQL 5.5.
Här är mina främsta fem anledningar till att jag fortsätter med InnoDB
- InnoDB stöder låsning på radnivå, vilket är avgörande för prestandan. MyISAM stöder endast låsning på tabellnivå och skapar en enorm flaskhals när din tabell uppdateras ofta.
- InnoDB implementerar transaktioner, som är avgörande för verksamhetskritiska databasapplikationer som är involverade i såväl bank- som e-handel.
- InnoDB stöder relationsbegränsningar som främmande nycklar vilket gör den mer relationsdatabasvänlig än MyISAM som inte stöder någon.
- InnoDB stöder ACID-transaktioner (Atomicity, Consistency, Isolation, Durability), vilket gör den helt kompatibel med RDBMS-regler som MyISAM inte stöder.
- InnoDB hanterar index och bastabell med hjälp av lagringshanteraren internt med minnesbuffertpool, vilket är extremt effektivt sett till prestanda. MyISAM använder diskfiler främst för bastabellen, som inte är optimerad för prestanda.
Mitt förslag är att om du måste välja motor antingen låter du din MySQL bestämma standardmotorn eller väljer InnoDB som har de senaste funktionerna i RDBMS.
Jag skriver för närvarande en whitepaper om detta ämne, när whitepapern har publicerats kommer jag att dela den med er alla så att ni kan läsa den om det.