MySQL supporta diversi tipi di tabelle (storage engine).
Ogni tipo di tabella sostiene diverse funzioni, ha i suoi pregi ed i sui limiti (soprattutto in termini di quantità di dati che è possibile memorizzare).
Inoltre si comporta meglio o peggio in determinate situazioni.
In questo articolo ci concentreremo sui due modelli di motori di archiviazione (storage engine) largamente più utilizzati tralasciando gli altri.
MyISAM o InnoDB
Il tipo di tabella più importante è MyISAM, che è inoltre lo storage engine di default su tutti i sistemi operativi eccetto per Windows.
Le tabelle MyISAM sono utili per la maggior parte delle applicazioni, gestiscono SELECT
ed INSERT
molto rapidamente ma non possono gestire le transazioni.
Questo è il loro principale svantaggio.
Dopo MyISAM, il motore di archiviazione più comune è InnoDB, che è anche il tipo di tabella di default per le installazioni Windows di MySQL.
Le tabelle InnoDB possono essere utilizzate per le transazioni e lavorano bene con gli UPDATE
.
Ma il motore di memorizzazione InnoDB è generalmente più lento di MyISAM e richiede più spazio su disco sul server. Inoltre, una tabella InnoDB non supporta gli indici FULLTEXT
.
Le tabelle transazionali sono sicuramente più sicure in quanto permettono di recuperere i dati anche in caso di crash di MySQL, inoltre permettono di eseguire più modifiche e di eseguirle tutte insieme
in caso positivo o di annullarle tutte nel caso che qualcosa vada storto.
Sintassi
Per specificare il motore di archiviazione quando si definisce una tabella, aggiungere una clausola alla fine della dichiarazione di creazione:
CREATE TABLE tablename ( column1name COLUMNTYPE, column1name COLUMNTYPE… ) ENGINE = INNODB
Se non si specifica un motore di storage durante la creazione della tabella, MySQL utilizzerà il tipo di default per il server MySQL.
Tuttavia è possibile modificare il tipo al momento dell’installazione di MySQL oppure lanciando in seguito il Configuration Wizard.
Per modificare il tipo di una tabella esistente possiamo utilizzare il comando ALTER
:
ALTER TABLE tablename ENGINE = MYISAM
Il comando ALTER
viene utilizzato principalmente per modificare la struttura di una tabella esistente.
Questo significa aggiungere, eliminare o modificare le colonne in essa, comprese laggiunta e l’eliminazione di indici .
Un’istruzione ALTER
può anche essere usata per rinominare la tabella nel suo complesso. La sintassi di base di è:
ALTER TABLE tablename CLAUSE
Per visualizzare le informazioni correnti delle tabelle (quindi anche il tipo di storage engine) usiamo:
SHOW TABLE STATUS;
Il comando SHOW TABLE STATUS
restituisce tutti i tipi di informazioni utili sulle tabelle di un database.
Il risultato restituito tuttavia sarà difficile da leggere, in quanto si tratta di una grande tabella visualizzata su più righe. Comunque quello che stiamo cercando sono:
il primo elemento di ogni riga che è il nome della tabella, ed il secondo elemento che è il motore della tabella. Il motore sarà probabilmente o MyISAM o InnoDB.
Tips
Per rendere i risultati delle queries più semplici da visualizzare nel client MySQL, è possibile aggiungere il parametro G
.
In questo modo i risultati saranno visualizzati in verticale anziché in orizzontale. Si noti che non è necessario utilizzare un punto e virgola in chiusura, perché il G
termina il comando.
SHOW TABLE STATUS G
Lo stesso database può avere tabelle di tipi diversi. L’esempio più comune è un database di e-commerce che utilizza MyISAM per clienti e prodotti, ed InnoDB per gli ordini (per consentire le transazioni).
2 risposte su “MySQL – Tipi di tabella”
he weblog was how do i say it… relevant, finally something that helped me. Many thanks
I couldn’t resist commenting