InnoDB: il miglior storage engine per MySQL?

Se i siti web di dimensioni più grandi si caricano lentamente, è spesso dovuto alla mancata ottimizzazione dei relativi database. Chi mette in ordine è già a metà dell’opera, e questo vale anche per il settore digitale. Con i database in costante crescita, è necessario un sistema adeguato di gestione dei database o DBMS. Tra questi DBMS troviamo anche MySQL, che consente di elaborare, memorizzare e archiviare in modo permanente grandi quantità di dati.

InnoDB svolge un ruolo importante nella memorizzazione dei dati su MySQL. Si tratta di un sottosistema di archiviazione che grazie soprattutto al miglioramento delle sue prestazioni e affidabilità ha prevalso negli ultimi anni su altre storage engines. Vi spieghiamo esattamente di cosa si tratta, gli svantaggi che comporta e come si differenzia dal sottosistema di archiviazione MyISAM.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estremamente vantaggiose e potenti core dedicati
  • Massima flessibilità senza periodo contrattuale minimo
  • Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7

Che cos’è InnoDB?

InnoDB si è evoluto da sottosistema di archiviazione a storage engine tuttofare per MySQL. L’elevata affidabilità, anche ad alte prestazioni, ha reso InnoDB lo storage engine standard di MySQL dalla versione 5.6 in poi.

N.B.

MySQL è un database open source compatibile con diversi storage engines, il che lo rende così flessibile e ideale per il web hosting. Oltre a InnoDB e al predecessore ufficiale MyISAM, esistono anche altri engine, come BerkeleyDB, CSV, NDB e Federated Engine.

Come sistema di gestione di database, MySQL permette la memorizzazione, l’indicizzazione e il recupero di dati in una tabella. Quando si tratta, ad esempio, di leggere e scrivere grandi quantità di dati, come nel caso di siti web o applicazioni, o quando i dati devono essere elaborati in vista di una transazione, il software fornisce la soluzione corretta. InnoDB offre a MySQL lo storage engine di cui ha bisogno, che si comporta come un modulo da integrare in modo flessibile nel software. MySQL determina comunque sempre la modalità con cui memorizzare i dati di un database.

N.B.

I database sono costituiti da tabelle assegnate durante la configurazione di uno specifico storage engine come InnoDB.

La maggior parte degli engine memorizza i dati su dischi o li conserva nella memoria principale per un accesso rapido. In InnoDB, le transazioni di dati vengono eseguite indipendentemente l’una dall’altra: la transazione viene scritta sul rispettivo supporto di memorizzazione solo dopo essere stata completata. Questo permette di prevenire accessi incompleti a un database creato.

N.B.

Le transazioni sono pacchetti di dati frutto di diverse operazioni indissolubili. In caso di fallimento di una sola operazione, fallisce anche l’intera transazione. Per correggere un errore del genere è necessario annullare non solo l’operazione difettosa, ma anche tutte le precedenti. Si tratta di un processo che richiede più tempo di una semplice operazione, ma è l’unico modo per garantire un database coerente.

Perché MySQL utilizza InnoDB?

Ogni tabella InnoDB dispone i dati su disco. Questo rende l’accesso più lento, ma molto più sicuro, dato che ogni tabella è ottimizzata con una chiave primaria. La selezione dei dati è quindi più veloce, mentre l’inserimento e l’aggiornamento sono più lenti. Questo è il motivo per cui InnoDB è particolarmente adatto come storage engine per MySQL, soprattutto per database più grandi con molti dati collegati tra loro.

Come già accennato, i dati di una transazione in InnoDB sono correlati. Quando i dati vengono eliminati, InnoDB elimina automaticamente tutti i dati di riferimento, rendendo notevolmente più facile per l’utente rispettare l’integrità referenziale del database. Questa integrità referenziale deve essere, tuttavia, stabilita in anticipo, altrimenti non viene applicata in automatico. Allo stesso modo è possibile, ad esempio, bloccare gli accessi in scrittura ai record di dati.

La struttura delle tabelle di InnoDB è memorizzata in file frm, payload e indici all’interno di una tablespace connessa al database che può comprendere uno o più file. Anche in questo caso vale l’integrità referenziale: la configurazione della tablespace può essere distribuita in directory diverse, ma deve essere impostata all’inizio del lavoro e non può essere modificata successivamente. Il lavoro con una tabella InnoDB è simile a quello con una partizione del disco rigido, dove le regolazioni successive possono provocare la perdita di dati.

L’esempio più conosciuto di InnoDB è probabilmente mediawiki, il software che, tra le altre cose, costituisce la base per il sito web di Wikipedia.

N.B.

Un sistema di database adatto è uno dei componenti più importanti per gestire un’applicazione web con successo. Le soluzioni di Web hosting di IONOS vi offrono un potente database in un pacchetto personalizzato composto da webspace, memoria centrale e un dominio.

Vantaggi e svantaggi della combinazione di MySQL e InnoDB

InnoDB è fondamentalmente più recente e moderno di altri storage engines per MySQL. Tuttavia, è anche più complesso e richiede un ambiente di database molto più potente. Poiché aumenta costantemente anche la complessità delle stesse applicazioni web, i gestori dipendono sempre più dalle possibilità (transazioni, chiavi esterne) che MySQL può offrire grazie a InnoDB: tutti i processi su un sito web si basano sulla lettura dei contenuti del database. Il tempo di risposta con InnoDB può essere più lento, ad esempio quando vengono aggiornati i post o si creano nuovi articoli, ma la parte decisiva, ovvero la fornitura dei nuovi contenuti all’utente, avviene molto più rapidamente.

I vantaggi e gli svantaggi di InnoDB si compensano a vicenda, purché si tratti di un sito web ordinario e moderno. Se parliamo invece di uno shop online, si evidenziano subito i limiti: in questo caso, ad esempio, nel sistema di prenotazione vengono eseguiti molti accessi in scrittura, per cui il sistema di chiavi di sola lettura di InnoDB non è molto utile. In questo contesto vengono invece utilizzate tabelle che gestiscono meglio gli accessi di scrittura, come MyISAM.

L’aspetto senza dubbio più importante quando MySQL utilizza InnoDB è che modifiche errate all’interno dei database possono rendere inutilizzabile l’intero sito web. Prima di apportare qualunque modifica è pertanto necessario eseguire un backup del database esistente. Proprio per questo, InnoDB utilizza un log delle transazioni che supporta il ripristino automatico in caso di errore.

Cosa distingue InnoDB da MyISAM?

Dalla versione 5, MySQL supporta più di dieci storage engine diversi. MyISAM è quello più conosciuto. Questo motore memorizza i dati delle singole tabelle in due file, uno per il file e uno per l’indice. ISAM sta per “Indexed Sequential Access Method” (metodo di accesso sequenziale indicizzato), quindi non permette a più utenti o applicazioni di scrivere contemporaneamente nella stessa tabella. La memorizzazione sequenziale consente l’accesso in scrittura a una sola applicazione per volta. La tabella può comunque essere letta da più utenti contemporaneamente. MyISAM è imbattibile per la lettura contemporanea di molti pacchetti piccoli di dati da parte di più utenti.

InnoDB è conforme allo standard ACID (Atomicity Consistency Isolation Durability). Tutte le transazioni vengono eseguite separatamente l’una dall’altra, ma più applicazioni possono scrivere i dati contemporaneamente nella stessa tabella. InnoDB ha un chiaro vantaggio nel recupero dei dati, ovvero l’operazione SELECT, mentre MyISAM è un po’ più veloce quando si tratta di accesso in scrittura a un database, grazie alle operazioni INSERT e UPDATE. InnoDB compensa comunque ampiamente la minore velocità con il suo registro delle transazioni. MyISAM non dispone della funzione di ripristino automatico in caso di errore, quindi è consigliato eseguire sempre un backup prima di apportare qualunque modifica.

In sintesi

Lo storage engine InnoDB non è sempre l’alternativa migliore al suo predecessore MyISAM, ma in caso di progetti o database più grandi o complessi, InnoDB è la scelta giusta. MyISAM è significativamente più potente per database o applicazioni più piccoli. Usati correttamente, entrambi gli storage engines rappresentano soluzioni valide. I due moduli si possono anche combinare nello stesso database, se necessario.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top