MySQL – MyISAM o InnoDB?

MySQL supporta diverse tipi di tabelle, quelle più utilizzate sono MyISAM e InnoDB, quale scegliere?

La scelta dipende dall’utilizzo che si deve fare del database, vediamo brevemente le differenze.

Le tabelle MyISAM si caratterizzano per le prestazioni elevate e le richieste ridotte in termini di risorse, bisogna però dire che mancano alcune caratteristiche piuttosto importanti come il supporto alle foreign key e alle transazioni mentre viene data la possibilità di utilizzare indici FULLTEXT.
Le tabelle MyISAM sono compose da tre file che hanno estensioni .frm, .MYD e .MIY.
I file .frm contengono la struttura della tabella, i file .MYD contengono i dati mentre nel file .MIY si trovano gli indici.
Le tabelle possono essere spostate da un server all’altro semplicemente copiando questi tre file.

InnoDB è decisamente più completo, supporta infatti le foreign key e le transazioni, risulta quindi possibile creare database relazioni e transazionali.
Le transazioni sono operazioni che iniziano con l’istruzione BEGIN, seguita da altre istruzioni che modificano i dati della tabella e concluse dall’istruzione COMMIT con la quale viene eseguita la scrittura dei dati o dall’istruzione ROLLBACK con la quale vengono annullate le istruzioni precedenti.
Si tratta quindi di una funzionalità molto importante nel commercio elettronico e nei casi in cui è richiesta la conferma della validità di una carta di credito.
Le foreign key permettono invece di creare vincoli di integrità referenziale tra le tabelle.
Il maggiore numero di funzionalità ha però come conseguenza richieste di risorse superiori rispetto a MyISAM.

Quando utilizzare MyISAM?
MyISAM è la soluzione migliore quando il database riceve un numero di query per la lettura dei datti decisamente maggiore rispetto alle operazioni di modifica dei dati.
Se il rapporto tra letture e scritture è inferiore al 15%, risulta consigliabile l’utilizzo di MYISAM.
Un altro caso in cui è preferibile MyISAM è quello in cui si hanno risorse disco e memoria limitate.

Quando utilizzare InnoDB?
Quando si ha la necessità di creare database relazionali e transazionali, è necessario scegliere InnoDB.