MyISAM e InnoDB.

MyISAM è un motore di immagazzinamento dei dati molto veloce e richiede poche risorse, sia sotto il profilo RAM che di spazio su disco. Si tratta dello Storage Engine predefinito in MySQL. Il limite è nel mancato supporto delle transazioni, cioè le relazioni fra le tabelle del database sono fatte solo nel momento della creazione della query. Tre sono i files che MyISAM registra di ogni tabella: .frm, .myi, .myd. Il primo è la struttura della tabella; il secondo contiene gli indici; il terzo contiene i dati veri e propri. MyISAM può registrare i dati in tre formati differenti: fixed, dynamic, compressed.

InnoDB è un motore di salvataggio dei dati (Storage Engine) per MySQL. Le relazioni si possono creare già al momento della creazione della tabella. Posso scegliere i vincoli d’integrazione, perciò aggiornamenti e cancellazioni vanno a cascata.

Differenze tra InnoDB e MyISAM:

  • dopo un crash del sistema, per riparare una tabella, InnoDB riesegue le ultime istruzioni registrate nei log. MyISAM, invece, esegue una scansione completa della tabella per poi ripararla ed eventualmente ricostruire gli indici. Quindi InnoDB non impiega più tempo per la riparazione della tabella, mentre MyISAM impiega un tempo proporzionale alle dimensioni della tabella
  • InnoDB ha una sua gestione della cache. Le pagine modificate di dati non vengono inviate immediatamente al sistema e questo rende la modifica dei dati molto più rapida
  • MyISAM immagazzina i record di una tabella nell’ordine in cui sono stati creati, mentre InnoDB li immagazzina nell’ordine seguito dalla chiave primaria. Nell’ultimo caso l’operazione è più rapida
  • InnoDB comprime i record molto meno di MyISAM. InnoDB richiede un maggiore spazio su disco
  • InnoDB non supporta(va) le ricerche fulltext

I limiti di InnoDB sono: il non poter creare più di 1000 colonne per tabella; su alcuni sistemi operativi le dimensioni del tablespace non possono superare i 2 GB; la grandezza di tutti i files di log deve essere inferiore ai 4 GB; la grandezza minima di un tablespace è di 10 MB; sono stati introdotti gli indici fulltext che – però – talvolta sono meno efficienti rispetto a quelli di MyISAM.

Leave a Reply

Your email address will not be published. Required fields are marked *