MyISAM Storage Formats
Contents
Lo Storage Engine MyISAM supporta tre differenti formati di storage.
Questi sono FIXED, DYNAMIC e COMPRESSED, e possono essere impostati tramite l'opzione ROW FORMAT nell'istruzione CREATE TABLE, o possono essere scelti automaticamente a seconda dei tipi delle colonne.
Fixed-length
Le tabelle fixed-length (o statiche) contengono righe di lunghezza fissa. In tutti i record le colonne hanno rispettivamente la stessa lunghezza, indipendentemente dai dati contenuti. E' il formato predefinito se la tabella non contiene campi BLOB, TEXT, VARCHAR o VARBINARY, e nessun altro ROW FORMAT è specificato. E' anche possibile impostarlo esplicitamente con ROW_FORMAT=FIXED nella definizione della tabella.
Le tabelle contenenti campi BLOB o TEXT non possono essere FIXED, perché questi tipi sono dinamici.
Le tabelle di lunghezza fissa presentano le seguenti caratteristiche:
- Veloci, perché MariaDB sa sempre dove cominciano i record
- Facili da registrare nella cache
- Prendono più spazio delle tabelle dynamic e compressed, perché per ogni record viene allocato lo spazio massimo.
- Ricostruire dopo un crash è più semplice grazie alle posizioni fisse
- Niente frammentazione né necessità di riorganizzare, a meno che non si eliminino i record e si desideri recuperare lo spazio.
Dynamic
Le tabelle Dynamic contengono record di lunghezza variabile. E' il formato predefinito per le tabelle contenenti campi BLOB, TEXT, VARCHAR e VARBINARY, se nessun altro ROW FORMAT è specificato. E' possibile impostare DYNAMIC con ROW_FORMAT=DYNAMIC nella definizione della tabella.
Le tabelle dinamiche presentano le seguenti caratteristiche:
- Ogni riga contiene un header che ne indica la lunghezza.
- Le righe si frammentano facilmente. Se si esegue un UPDATE di un record aumentandone la lunghezza, è probabile che questo occuperà più posizioni sul disco.
- Tutte le colonne stringa con una lunghezza di quattro o più sono dinamiche.
- Richiedono meno spazio delle tabelle fixed-length.
- Recuperare dopo un crash è più complicato.
Compressed
Il formato Compressed è di sola lettura e si ottiene con lo strumento myisampack. Per decomprimere le tabelle di usa myisamchk.
Le tabelle compresse presentano le seguenti caratteristiche:
- Sebbene i dati siano di sola lettura, le istruzioni DDL come DROP TABLE e TRUNCATE TABLE funzionano correttamente.
- Prendono meno spazio delle tabelle fixed e dynamic.
- Le righe vengono compresse separatamente, riducendo il ritardo nell'accesso ai dati.
- Gli header delle righe occupano da uno a tre byte.
- Le righe possono essere compresse con diversi metodi, compresi:
- Compressione dello spazio del prefisso
- Compressione dello spazio del suffisso
- Le colonne contenenti piccoli insiemi di valori sono convertite in ENUM
- Gli zeri numerici vengono registrati in un solo bit
- Le colonne numeriche intere vengono convertite al tipo numerico più piccolo che sia in grado di contenerne i dati