Trascorro la maggior parte del mio tempo a lavorare con i miei clienti sul controllo completo delle prestazioni del database . La parte migliore del coinvolgimento del controllo sanitario è che posso incontrare molte nuove persone e condividere molte storie diverse. Di recente mi è stato chiesto da uno dei DBA che lavorano anche su MySQL insieme a SQL Server, qual è il mio motore preferito per MySQL:MyISAM o InnoDB?
Penso che sia una domanda molto interessante da porre nell'anno 2019 poiché credo che il team MySQL stesso abbia già preso questa decisione dalla versione 5.5 di MySQL. Hanno già selezionato InnoDB come motore predefinito da MySQL 5.5.
Ecco i miei cinque motivi principali per utilizzare InnoDB
- InnoDB supporta il blocco a livello di riga che è fondamentale per le prestazioni. MyISAM supporta solo il blocco a livello di tabella creando un enorme collo di bottiglia quando la tabella viene aggiornata frequentemente.
- InnoDB implementa le transazioni, che sono fondamentali per l'applicazione di database mission-critical che è coinvolta nel settore bancario e nell'e-commerce.
- InnoDB supporta vincoli di relazione come chiavi esterne che lo rendono più compatibile con il database relazionale rispetto a MyISAM che non ne supporta nessuno.
- InnoDB supporta le transazioni ACID (Atomicity, Consistency, Isolation, Durability), rendendolo completamente conforme alle regole RDBMS che MyISAM non lo supporta.
- InnoDB gestisce gli indici e la tabella di base con l'ausilio di storage manager internamente con pool di buffer di memoria, estremamente efficiente in termini di prestazioni. MyISAM utilizza i file del disco principalmente per la tabella di base, che non è ottimizzata per le prestazioni.
Il mio suggerimento è che se devi selezionare il motore, lascia che sia il tuo MySQL a decidere il motore predefinito o seleziona InnoDB che ha le ultime funzionalità di RDBMS.
Sto scrivendo un whitepaper su questo argomento, una volta pubblicato il whitepaper lo condividerò con tutti voi in modo che possiate leggerlo al riguardo.