Se i siti web di di­men­sio­ni più grandi si caricano len­ta­men­te, è spesso dovuto alla mancata ot­ti­miz­za­zio­ne 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, è ne­ces­sa­rio un sistema adeguato di gestione dei database o DBMS. Tra questi DBMS troviamo anche MySQL, che consente di elaborare, me­mo­riz­za­re e ar­chi­via­re in modo per­ma­nen­te grandi quantità di dati.

InnoDB svolge un ruolo im­por­tan­te nella me­mo­riz­za­zio­ne dei dati su MySQL. Si tratta di un sot­to­si­ste­ma di ar­chi­via­zio­ne che grazie so­prat­tut­to al mi­glio­ra­men­to delle sue pre­sta­zio­ni e af­fi­da­bi­li­tà ha prevalso negli ultimi anni su altre storage engines. Vi spie­ghia­mo esat­ta­men­te di cosa si tratta, gli svantaggi che comporta e come si dif­fe­ren­zia dal sot­to­si­ste­ma di ar­chi­via­zio­ne MyISAM.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

Che cos’è InnoDB?

InnoDB si è evoluto da sot­to­si­ste­ma di ar­chi­via­zio­ne a storage engine tuttofare per MySQL. L’elevata af­fi­da­bi­li­tà, anche ad alte pre­sta­zio­ni, ha reso InnoDB lo storage engine standard di MySQL dalla versione 5.6 in poi.

N.B.
MySQL è un database open source com­pa­ti­bi­le con diversi storage engines, il che lo rende così fles­si­bi­le e ideale per il web hosting. Oltre a InnoDB e al pre­de­ces­so­re ufficiale MyISAM, esistono anche altri engine, come Ber­ke­leyDB, CSV, NDB e Federated Engine.

Come sistema di gestione di database, MySQL permette la me­mo­riz­za­zio­ne, l’in­di­ciz­za­zio­ne 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 ap­pli­ca­zio­ni, o quando i dati devono essere elaborati in vista di una tran­sa­zio­ne, 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 fles­si­bi­le nel software. MySQL determina comunque sempre la modalità con cui me­mo­riz­za­re i dati di un database.

N.B.
I database sono co­sti­tui­ti da tabelle assegnate durante la con­fi­gu­ra­zio­ne di uno specifico storage engine come InnoDB.

La maggior parte degli engine memorizza i dati su dischi o li conserva nella memoria prin­ci­pa­le per un accesso rapido. In InnoDB, le tran­sa­zio­ni di dati vengono eseguite in­di­pen­den­te­men­te l’una dall’altra: la tran­sa­zio­ne viene scritta sul ri­spet­ti­vo supporto di me­mo­riz­za­zio­ne solo dopo essere stata com­ple­ta­ta. Questo permette di prevenire accessi in­com­ple­ti a un database creato.

N.B.
Le tran­sa­zio­ni sono pacchetti di dati frutto di diverse ope­ra­zio­ni in­dis­so­lu­bi­li. In caso di fal­li­men­to di una sola ope­ra­zio­ne, fallisce anche l’intera tran­sa­zio­ne. Per cor­reg­ge­re un errore del genere è ne­ces­sa­rio annullare non solo l’ope­ra­zio­ne difettosa, ma anche tutte le pre­ce­den­ti. Si tratta di un processo che richiede più tempo di una semplice ope­ra­zio­ne, 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 è ot­ti­miz­za­ta con una chiave primaria. La selezione dei dati è quindi più veloce, mentre l’in­se­ri­men­to e l’ag­gior­na­men­to sono più lenti. Questo è il motivo per cui InnoDB è par­ti­co­lar­men­te adatto come storage engine per MySQL, so­prat­tut­to per database più grandi con molti dati collegati tra loro.

Come già accennato, i dati di una tran­sa­zio­ne in InnoDB sono correlati. Quando i dati vengono eliminati, InnoDB elimina au­to­ma­ti­ca­men­te tutti i dati di ri­fe­ri­men­to, rendendo no­te­vol­men­te più facile per l’utente ri­spet­ta­re l’integrità re­fe­ren­zia­le del database. Questa integrità re­fe­ren­zia­le deve essere, tuttavia, stabilita in anticipo, al­tri­men­ti non viene applicata in au­to­ma­ti­co. Allo stesso modo è possibile, ad esempio, bloccare gli accessi in scrittura ai record di dati.

La struttura delle tabelle di InnoDB è me­mo­riz­za­ta in file frm, payload e indici all’interno di una ta­ble­spa­ce connessa al database che può com­pren­de­re uno o più file. Anche in questo caso vale l’integrità re­fe­ren­zia­le: la con­fi­gu­ra­zio­ne della ta­ble­spa­ce può essere di­stri­bui­ta in directory diverse, ma deve essere impostata all’inizio del lavoro e non può essere mo­di­fi­ca­ta suc­ces­si­va­men­te. Il lavoro con una tabella InnoDB è simile a quello con una par­ti­zio­ne del disco rigido, dove le re­go­la­zio­ni suc­ces­si­ve possono provocare la perdita di dati.

L’esempio più co­no­sciu­to di InnoDB è pro­ba­bil­men­te mediawiki, il software che, tra le altre cose, co­sti­tui­sce la base per il sito web di Wikipedia.

N.B.
Un sistema di database adatto è uno dei com­po­nen­ti più im­por­tan­ti per gestire un’ap­pli­ca­zio­ne web con successo. Le soluzioni di Web hosting di IONOS vi offrono un potente database in un pacchetto per­so­na­liz­za­to composto da webspace, memoria centrale e un dominio.

Vantaggi e svantaggi della com­bi­na­zio­ne di MySQL e InnoDB

InnoDB è fon­da­men­tal­men­te 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 co­stan­te­men­te anche la com­ples­si­tà delle stesse ap­pli­ca­zio­ni web, i gestori dipendono sempre più dalle pos­si­bi­li­tà (tran­sa­zio­ni, 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 ag­gior­na­ti i post o si creano nuovi articoli, ma la parte decisiva, ovvero la fornitura dei nuovi contenuti all’utente, avviene molto più ra­pi­da­men­te.

I vantaggi e gli svantaggi di InnoDB si com­pen­sa­no a vicenda, purché si tratti di un sito web ordinario e moderno. Se parliamo invece di uno shop online, si evi­den­zia­no subito i limiti: in questo caso, ad esempio, nel sistema di pre­no­ta­zio­ne 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 uti­liz­za­te tabelle che ge­sti­sco­no meglio gli accessi di scrittura, come MyISAM.

L’aspetto senza dubbio più im­por­tan­te quando MySQL utilizza InnoDB è che modifiche errate all’interno dei database possono rendere inu­ti­liz­za­bi­le l’intero sito web. Prima di apportare qualunque modifica è pertanto ne­ces­sa­rio eseguire un backup del database esistente. Proprio per questo, InnoDB utilizza un log delle tran­sa­zio­ni che supporta il ri­pri­sti­no au­to­ma­ti­co in caso di errore.

Cosa distingue InnoDB da MyISAM?

Dalla versione 5, MySQL supporta più di dieci storage engine diversi. MyISAM è quello più co­no­sciu­to. 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 se­quen­zia­le in­di­ciz­za­to), quindi non permette a più utenti o ap­pli­ca­zio­ni di scrivere con­tem­po­ra­nea­men­te nella stessa tabella. La me­mo­riz­za­zio­ne se­quen­zia­le consente l’accesso in scrittura a una sola ap­pli­ca­zio­ne per volta. La tabella può comunque essere letta da più utenti con­tem­po­ra­nea­men­te. MyISAM è im­bat­ti­bi­le per la lettura con­tem­po­ra­nea di molti pacchetti piccoli di dati da parte di più utenti.

InnoDB è conforme allo standard ACID (Atomicity Con­si­sten­cy Isolation Durability). Tutte le tran­sa­zio­ni vengono eseguite se­pa­ra­ta­men­te l’una dall’altra, ma più ap­pli­ca­zio­ni possono scrivere i dati con­tem­po­ra­nea­men­te nella stessa tabella. InnoDB ha un chiaro vantaggio nel recupero dei dati, ovvero l’ope­ra­zio­ne SELECT, mentre MyISAM è un po’ più veloce quando si tratta di accesso in scrittura a un database, grazie alle ope­ra­zio­ni INSERT e UPDATE. InnoDB compensa comunque am­pia­men­te la minore velocità con il suo registro delle tran­sa­zio­ni. MyISAM non dispone della funzione di ri­pri­sti­no au­to­ma­ti­co in caso di errore, quindi è con­si­glia­to eseguire sempre un backup prima di apportare qualunque modifica.

In sintesi
Lo storage engine InnoDB non è sempre l’al­ter­na­ti­va migliore al suo pre­de­ces­so­re MyISAM, ma in caso di progetti o database più grandi o complessi, InnoDB è la scelta giusta. MyISAM è si­gni­fi­ca­ti­va­men­te più potente per database o ap­pli­ca­zio­ni più piccoli. Usati cor­ret­ta­men­te, entrambi gli storage engines rap­pre­sen­ta­no soluzioni valide. I due moduli si possono anche combinare nello stesso database, se ne­ces­sa­rio.
Vai al menu prin­ci­pa­le