Storage engine
# Storage engine

In informatica gli storage engine, o database engine, un tempo noti come table type, sono librerie per MySQL e i suoi fork che implementano la gestione fisica dei dati. Alcuni dei compiti affidati agli storage engine sono: scrittura e lettura dei record, indicizzazione, cache, transazioni.

Gli storage engine sono un tipo di plugin per MySQL e i suoi fork. Alcuni sono distribuiti insieme a MySQL. Altri sono prodotti da terze parti. Vi sono anche storage engine sviluppati per MariaDB, che sfruttano le sue funzionalità specifiche e non funzionano necessariamente su MySQL. Alcuni sono attivi per default e generalmente possono essere esclusi all'avvio o in fase di compilazione. Altri devono essere abilitati esplicitamente.

In pratica, scegliere uno storage engine piuttosto che un altro significa modificare il modo in cui i dati vengono gestiti. Ad esempio InnoDB è molto performante e assicura un livello ragionevole di consistenza dei dati; MyISAM non supporta le transazioni, ma questo gli permette di semplificare le operazioni di lettura, rendendolo quindi adatto ai grandi data warehouse; Memory scrive le tabelle in memoria ed è quindi indicato per le tabelle temporanee. Altri storage engine possono implementare una gestione dei dati fuori dall'ordinario, dotando quindi il server di funzionalità completamente nuove. Ad esempio CassandraSE permette a MariaDB di interfacciarsi con Apache Cassandra, CONNECT permette a MariaDB di utilizzare i file di testo in diversi formati come tabelle relazionali, mentre ShardQuery, SpiderSE e ScaleDB implementano lo sharding dei dati in modi diversi.

## Interfaccia SQL

MySQL e i suoi fork implementano una serie di istruzioni SQL che permettono di lavorare con gli storage engine.

### Visualizzare gli storage engine installati

Per visualizzare gli storage engine installati:

Questo comando visualizza una tabella che elenca gli storage engine presenti e alcune delle loro caratteristiche. La colonna Engine, mostrata nell'output del comando, contiene il nome del plugin. La colonna Comment contiene una breve descrizione. La colonne Support indica se il server supporta lo storage engine. Ha tre valori possibili: DEFAULT significa che è supportato ed è quello utilizzato di default, quando si crea una tabella senza specificare l'engine da utilizzare; YES significa che è installato; NO significa che la libreria è presente ma non è stata installata. Le altre colonne indicano se lo storage engine fornisce o meno determinate funzionalità.

In alternativa è possibile interrogare la tabella PLUGINS nel database information_schema.

### Installare e disinstallare gli storage engine

Perché un plugin possa essere installato, è necessario che la libreria si trovi nella directory dei plugin, cioè quella puntata dalla variabile plugin_dir.

Per installare un plugin:

Per disinstallare un plugin:

Con MariaDB, se lo storage engine è parte di una libreria di plugin, è possibile installare e disinstallare questi plugin con un unico comando:

Per aggiornare un plugin occorre disinstallarlo e reinstallarlo.

