Domanda

Quali sono le differenze tra i tipi MyISAM e Inno DB in MySql?

È stato utile?

Soluzione

La differenza principale è che InnoDB supporta le transazioni mentre MyISAM no.

Esistono numerose altre differenze, tuttavia le persone comuni di cui sono a conoscenza sono:

  • MyISAM è stato generalmente considerato più veloce nella ricerca, ma i recenti miglioramenti di InnoDB stanno rimuovendo questa differenza e migliorando le prestazioni del carico di lavoro ad alta concorrenza
  • InnoDB supporta le transazioni mentre MyISAM non lo fa
  • InnoDB supporta l'integrità referenziale mentre MyISAM no
  • InnoDB gestisce gli indici in modo leggermente diverso, memorizzando la chiave primaria come parte di ogni indice (rendendo gli indici occupano più spazio sul disco, ma rendendo anche più probabile un indice di copertura)
  • MyISAM esegue il blocco a livello di tabella mentre InnoDB può eseguire il blocco a livello di riga
  • Diverse impostazioni di memoria / buffer / indice sono utilizzate nei file di configurazione di MySQL
  • InnoDB si dice che abbia un migliore recupero da crash
  • Come menzionato in un'altra risposta, i dati vengono archiviati su disco in modo diverso. Credo che InnoDB sia configurabile in quest'area e possa avere un file per tabella ecc. Se richiesto

Sono sicuro che una ricerca su Google o il sito MySQL porteranno numerose altre differenze in modo più dettagliato.

Altri suggerimenti

  

InnoDB e MyISAM

Confronto di funzionalità e prestazioni:

  1. InnoDB è più recente mentre MyISAM è più vecchio.
  2. InnoDB è più complesso mentre MyISAM è più semplice.
  3. InnoDB è più rigoroso nell'integrità dei dati mentre MyISAM è lento.
  4. InnoDB implementa il blocco a livello di riga per l'inserimento e l'aggiornamento mentre MyISAM implementa il blocco a livello di tabella.
  5. InnoDB ha transazioni mentre MyISAM no.
  6. InnoDB ha chiavi esterne e limiti di relazione mentre MyISAM no.
  7. InnoDB ha un migliore recupero degli arresti anomali mentre MyISAM non è in grado di ripristinare l'integrità dei dati in caso di arresti anomali del sistema.
  8. MyISAM ha un indice di ricerca full-text mentre InnoDB no.

Alla luce di queste differenze, InnoDB e MyISAM presentano vantaggi e svantaggi unici. Ognuno di essi è più adatto in alcuni scenari rispetto agli altri.

Vantaggi di InnoDB

  1. InnoDB dovrebbe essere usato laddove l'integrità dei dati è una priorità perché si occupa intrinsecamente di essi con l'aiuto di vincoli relazionali e transazioni.
  2. Più veloce nelle tabelle ad alta intensità di scrittura (inserimenti, aggiornamenti) perché utilizza il blocco a livello di riga e mantiene solo le modifiche alla stessa riga che viene inserita o aggiornata.

Svantaggi di InnoDB

  1. Poiché InnoDB deve occuparsi delle diverse relazioni tra tabelle, l'amministratore del database e i creatori di schemi devono dedicare più tempo alla progettazione di modelli di dati che sono più complessi di quelli di MyISAM.
  2. Consuma più risorse di sistema come la RAM. È un dato di fatto, molti raccomandano di spegnere il motore InnoDB se non ne è sostanzialmente necessario dopo l'installazione di MySQL.
  3. Nessuna indicizzazione full-text.

Vantaggi di MyISAM

  1. Più semplice da progettare e creare, quindi migliore per i principianti. Nessuna preoccupazione per le relazioni estere tra le tabelle.
  2. Più veloce di InnoDB nel complesso a causa della struttura più semplice, quindi molto meno costi delle risorse del server.
  3. Indicizzazione full-text.
  4. Particolarmente adatto per le tabelle (seleziona) ad alta intensità di lettura.

Svantaggi di MyISAM

  1. Nessun controllo di integrità dei dati (ad es. vincoli di relazione), che quindi diventa una responsabilità e un sovraccarico degli amministratori del database e degli sviluppatori di applicazioni.
  2. Non supporta transazioni essenziali nelle applicazioni di dati critici come quella bancaria.
  3. Più lento di InnoDB per le tabelle che vengono frequentemente inserite o aggiornate, poiché l'intera tabella è bloccata per qualsiasi inserimento o aggiornamento.

Il confronto è piuttosto semplice. InnoDB è più adatto a situazioni critiche di dati che richiedono inserimenti e aggiornamenti frequenti. MyISAM, d'altra parte, funziona meglio con le applicazioni che non dipendono completamente dall'integrità dei dati e per lo più selezionano e visualizzano i dati.

Riferimento: Confronto InnoDB e MyISAM

Puoi anche dare un'occhiata qui per ulteriori dettagli: Motore MySQL MyISAM o InnoDB?

Spero che questo aiuti.

MyISAM supporta l'indicizzazione full-text (non standard-SQL) che InnoDB non supporta ancora. Questa è l'unica ragione per cui oggi utilizziamo MyISAM.

La differenza più importante tra MyISAM e InnoDB è che InnoDB supporta transazioni e chiavi esterne. Se hai bisogno di chiavi esterne e funzionalità correlate (ad esempio eliminazioni in cascata automatiche), dovrai utilizzare InnoDB.

InnoDB è più lento di MyISAM per la maggior parte degli usi, ma può funzionare più velocemente in determinate condizioni grazie a un migliore meccanismo di blocco; MyISAM blocca l'intera tabella per la lettura durante l'esecuzione di inserimenti / aggiornamenti. InnoDB può eseguire il blocco a livello di riga, consentendo così più scritture e letture simultanee sulla tabella.

Puoi avere maggiori informazioni su MyISAM & amp; InnoDB nella documentazione di MySQL:

http://dev.mysql.com /doc/refman/5.1/en/myisam-storage-engine.html

http://dev.mysql.com/doc /refman/5.1/en/innodb-overview.html

La differenza principale è che InnoDB supporta transazioni , mentre MyISAM no.

MyISAM e InnoDB memorizzano anche i loro dati su disco in modo diverso. MyISAM utilizza un file di dati e un file di indice per ogni tabella, memorizzati in una directory denominata dopo il database. InnoDB sembra raggruppare tutto insieme in un file chiamato ibdata1.

Supporto NFS

A differenza di MyISAM, InnoDB potrebbe avere problemi su NFS.

Da Configurazione di InnoDB (MySQL versione 5.5)

  

Attenzione

     

Se l'affidabilità è una considerazione per   i tuoi dati, non configurare InnoDB su   utilizzare file di dati o file di registro su NFS   volumi. I potenziali problemi possono variare   in base al sistema operativo e alla versione di NFS,   e includere questioni come la mancanza di   protezione da scritture contrastanti,   e limitazioni sulle dimensioni massime dei file.

Caratteristiche di InnoDB 1. Offre piena capacità di transazione con piena conformità ACID (atomicità, coerenza, isolamento e durabilità).

  1. Ha il blocco a livello di riga. Supportando il blocco a livello di riga, è possibile aggiungere dati a una tabella InnoDB senza che il motore blocchi la tabella con ciascun inserto e questo accelera sia il recupero che l'archiviazione delle informazioni nel database.

  2. La chiave del sistema InnoDB è un database, la cache e la struttura di indicizzazione in cui sia gli indici che i dati vengono memorizzati nella cache, oltre che archiviati su disco Questo consente un recupero molto veloce e funziona anche su set di dati molto grandi .

  3. InnoDB supporta vincoli di chiave esterna

  4. InnoDB supporta il ripristino automatico degli arresti anomali
  5. InnoDB supporta la compressione delle tabelle (lettura / scrittura)
  6. InnoDB supporta tipi di dati spaziali (nessun indice spaziale)

  7. Innodb supporta ANALYZE TABLE senza blocco ed è richiesto solo quando il server è in esecuzione da molto tempo poiché si tuffa nelle statistiche dell'indice e ottiene le informazioni sull'indice quando si apre la tabella.

  8. Innodb non ha file di indice separati, quindi non devono essere aperti.

  9. Innodb costruisce i suoi indici una riga alla volta nell'ordine di chiave primaria (dopo un ALTER), il che significa che gli alberi degli indici non sono costruiti nell'ordine ottimale e sono frammentati. Al momento non è possibile deframmentare gli indici InnoDB, poiché InnoDB non può creare indici ordinando in MySQL 5.0. Anche la caduta e la ricostruzione di indici InnoDB può provocare indici frammentati, a seconda dei dati.

  10. Una tabella può contenere un massimo di 1000 colonne.

  11. La lunghezza massima interna della chiave di InnoDB è di 3500 byte, ma MySQL stesso lo limita a 3072 byte. (1024 byte per build non a 64 bit prima di MySQL 5.0.17 e per tutte le build prima della 5.0.15.)

  12. La dimensione della pagina del database predefinita in InnoDB è 16 KB. Compilando il codice, è possibile impostarlo su valori compresi tra 8 KB e 64 KB. Devi aggiornare i valori di UNIV_PAGE_SIZE e UNIV_PAGE_SIZE_SHIFT nel file sorgente univ.i.
  13. Le tabelle InnoDB non supportano gli indici FULLTEXT.

    Caratteristiche MYISAM

    1. Nessun supporto per le transazioni
    2. Blocco a livello di tabella
    3. Fornisce la ricerca full-text
    4. Nessun limite ai dati nella tabella.
    5. veloce COUNT (*) s (quando WHERE, GROUP BY o JOIN non vengono utilizzati)
    6. indicizzazione di testo completo
    7. footprint del disco più piccolo
    8. compressione tabella molto alta (sola lettura)
    9. tipi di dati spaziali e indici (albero a R)
  14. Utilizzando DATA DIRECTORY = '/ path / to / data / directory' o INDEX DIRECTORY = '/ path / to / index / directory' è possibile specificare dove dovrebbe essere il motore di archiviazione MyISAM inserire il file di dati di una tabella e il file di indice. La directory deve essere il nome completo del percorso della directory, non un percorso relativo.

puoi trovare maggiori dettagli su http://faisalbhagat.blogspot.com/2014/09/innodb-vs -myisam.html

Ecco una descrizione delle differenze tra InnoDB e MyIsam:

Differenze tra InnoDB e MyIsam

Poche differenze:

  • MYISAM non supporta alcuna transazione di database,
  • INNODB fornirà transazioni
  • MYISAM fornisce un blocco a livello di tabella,
  • INNODB fornisce un blocco a livello di riga
  • INNOBD supporta chiavi esterne, MYISAM non ...

MyISAM è più conveniente quando si tratta di backup, poiché è piuttosto semplice bloccare tutte le tabelle e copiare i file direttamente nel filesystem. (mysqlhotcopy che è uno script perl fa anche parte di mysql afaik)

InnoDB è un po 'più complesso e la sola copia dei file non lo farà poiché non possono essere ripristinati su un altro computer pronto all'uso.

Tuttavia, esistono software commerciali che offrono la copia a caldo InnoDB.

Sebbene il supporto alle transazioni sia la differenza principale, il blocco a livello di tabella può essere un problema se si dispone di query SELECT a esecuzione prolungata mescolate con istruzioni UPDATE .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top