GNU/Linux >> Linux Esercitazione >  >> Cent OS

MyISAM vs InnoDB:un confronto

Introduzione

La scelta del giusto motore di archiviazione è una decisione strategica cruciale che ha un impatto sullo sviluppo futuro. A seconda del tuo caso d'uso, scegli tra due motori di archiviazione principali per MySQL:MyISAM o InnoDB .

In questo articolo imparerai le principali differenze tra i motori di archiviazione MyISAM e InnoDB, come verificare quale motore di archiviazione stai utilizzando e come convertirlo.

Prerequisiti

  • Accesso al terminale /riga di comando
  • Un database MySQL funzionale
  • phpMyAdmin installato

Cosa sono MyISAM e InnoDB

MyISAM e InnoDB sono motori di archiviazione MySQL. I motori di archiviazione sono componenti del sistema di gestione del database utilizzati per manipolare i dati dal database.

Il mioISAM

MyISAM sta per Metodo di accesso sequenziale indicizzato. È stato il motore di archiviazione predefinito per MySQL fino a dicembre 2009. Con il rilascio di MySQL 5.5, MyISAM è stato sostituito con InnoDB.

MyISAM si basa su un algoritmo ISAM che visualizza rapidamente le informazioni da grandi set di dati. Ha un footprint di dati ridotto ed è più adatto per il data warehousing e le applicazioni web.

InnoDB

InnoDB è stato il motore di archiviazione predefinito per MySQL sin dal rilascio di MySQL 5.5. È più adatto per database di grandi dimensioni che contengono dati relazionali.

InnoDB si concentra sull'elevata affidabilità e prestazioni, rendendolo ottimo per i sistemi di gestione dei contenuti. Uno degli usi più noti di InnoDB è il software MediaWiki che alimenta Wikipedia.

Principali differenze tra MyISAM e InnoDB

Diamo un'occhiata alle principali differenze tra MyISAM e InnoDB.

Caratteristiche Il mioISAM InnoDB
Digita Non transazionale Transazionale
Blocco Blocco tabella Blocco a livello di riga
Chiavi estere No
Tabella, indice e archiviazione dei dati Tre file separati (.frm, .myd e .myi) Spazio tabella
Progettato per Velocità Prestazioni
ACIDO No

Tipo di motore di archiviazione

Esistono due tipi di motori di archiviazione, a seconda del metodo di rollback:

  • Non transazionale – le opzioni di scrittura devono essere ripristinate manualmente.
  • Transazionale – le opzioni di scrittura vengono ripristinate automaticamente se non vengono completate.

Riepilogo: MyISAM è un motore di archiviazione non transazionale, mentre InnoDB è un tipo transazionale di motore di archiviazione.

Blocco

Il blocco in MySQL è un'opzione che impedisce a due o più utenti di modificare i dati contemporaneamente. L'utente non può modificare i dati quando l'opzione di blocco è attivata. Questa funzione preserva la validità di tutti i dati.

Il mioISAM utilizza il blocco della tabella come metodo di blocco predefinito. Consente a una singola sessione di modificare le tabelle alla volta. I tavoli sono sempre bloccati nello stesso ordine. Il metodo di blocco delle tabelle è più adatto per database di sola lettura che non richiedono molta memoria.

Esempio di blocco della tabella:

Query Colonna 1 Colonna 2 Colonna 3
Query 1 (aggiornamento) Scrittura Dati Dati
Query 2 (attesa) Dati Dati Dati
Query 3 (attesa) Dati Dati Dati

InnoDB utilizza il blocco a livello di riga come metodo di blocco predefinito. Supporta più sessioni su righe selezionate bloccando solo le righe nel processo di modifica. Il blocco delle righe è più adatto per i database che hanno più utenti. Lo svantaggio è che richiede molta memoria e richiede più tempo per interrogare e modificare i dati.

Esempio di blocco a livello di riga:

Query Colonna 1 Colonna 2 Colonna 3
Query 1 (aggiornamento) Scrittura Dati Dati
Query 2 (seleziona) Lettura Dati Lettura
Query 3 (aggiornamento) Dati Scrittura Dati

Riepilogo: MyISAM utilizza il blocco della tabella, mentre InnoDB utilizza il blocco a livello di riga come metodo predefinito.

Chiavi estere

Una chiave esterna è una colonna (o una raccolta di colonne) in una tabella che si collega a una colonna (o una raccolta di colonne) in un'altra tabella. Impedisce azioni che distruggono il collegamento tra le tabelle e la possibilità di inserire dati non validi.

Riepilogo: MyISAM non supporta l'opzione della chiave esterna, mentre InnoDB lo fa.

Tabella, Indice e Archiviazione Dati

I due motori di archiviazione differiscono in base a come archiviano i file.

Il mioISAM memorizza tabelle, indici e dati in tre file separati:

  • .frm – Il formato della tabella contenente la struttura della tabella o la definizione della tabella.
  • .myi – Il file di indice con gli indici per ogni tabella.
  • .myd – Il file di dati che contiene i dati di ciascuna tabella.

InnoDB memorizza la struttura della tabella nel .frm file e ha uno spazio tabella dove memorizza indici e dati.

Riepilogo: MyISAM archivia i dati in tre file separati, mentre InnoDB archivia i dati in un unico file.

Supporto ACIDO

ACID si riferisce alle proprietà della transazione del database:atomicità , coerenza , isolamento e durabilità . Garantisce il completamento della transazione in caso di errore o guasto del sistema.

Fare riferimento al nostro articolo ACID vs. Base per ulteriori informazioni sui modelli di transazione del database.

Riepilogo: MyISAM non ha il supporto ACID, mentre InnoDB ha la piena conformità ACID.

Come verificare se stai utilizzando MyISAM o InnoDB

L'uso del corretto motore di archiviazione è essenziale per la manipolazione dei dati. Il motore di archiviazione errato può causare errori nelle query e ridurre la velocità e le prestazioni. Pertanto, è fondamentale verificare se MyISAM o InnoDB sono impostati come motore di archiviazione predefinito.

Nota: L'ottimizzazione delle prestazioni di MySQL richiede la valutazione di numerosi fattori. Ti consigliamo di utilizzare InnoDB invece di MyISAM per le migliori prestazioni.

Verifica tramite riga di comando

Trova informazioni sul motore di archiviazione predefinito seguendo i passaggi elencati di seguito.

1. Apri il terminale e accedi alla shell MySQL. Quindi, visualizza un elenco di database:

SHOW DATABASES;

2. Individua il database preferito dall'elenco e selezionalo:

USE database_name;

Il terminale visualizza un messaggio di conferma della modifica del database.


3. Quindi, usa SHOW CREATE TABLE comando per visualizzare le informazioni sulla tabella e sul motore di archiviazione:

SHOW CREATE TABLE database_name.table_name;

Nell'esempio seguente, l'output elenca InnoDB come motore di archiviazione predefinito.

Nota: Sostituisci database_name e table_name con il nome del database e della tabella.

Verifica Usando phpMyAdmin

Ci sono due modi per controllare il motore di archiviazione predefinito in phpMyAdmin:

  • Da un elenco di tabelle.
  • Eseguendo una query.

Da un elenco di tabelle

Puoi utilizzare un elenco di tabelle per scoprire quali tabelle utilizzano MyISAM o InnoDB come motore di archiviazione predefinito.

1. Apri phpMyAdmin e seleziona il database preferito dall'elenco.

2. Nell'elenco delle tabelle , individua il Tipo colonna per visualizzare i tipi di motori di archiviazione. Nel nostro esempio, i Clienti table utilizza MyISAM come motore di archiviazione predefinito.

Esecuzione di una query

Un altro modo per visualizzare un motore di archiviazione predefinito è eseguire una query.

1. Accedi a phpMyAdmin e seleziona il database preferito da un elenco di database.

2. Seleziona SQL scheda per accedere alle opzioni di query.

3. Immettere il comando seguente per visualizzare tutte le tabelle utilizzando MyISAM come motore di archiviazione:

SELECT TABLE_NAME, ENGINE FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'database_name' and ENGINE = 'myISAM'

4. Fai clic su Vai per eseguire una query.

Nota: Sostituisci database_name con il nome del tuo database.

L'output mostra un elenco di tutte le tabelle contenenti il ​​motore di archiviazione MyISAM.

Puoi utilizzare lo stesso comando per trovare i database utilizzando il motore di archiviazione InnoDB. Modifica la query sostituendo ENGINE = 'myISAM' con ENGINE = 'InnoDB' .

Come convertire MyISAM e InnoDB

Possono verificarsi problemi se si utilizza InnoDB nei processi quotidiani, mentre una tabella precedente utilizza MyISAM. Ecco perché è essenziale sapere come convertire le tabelle.

Convertire il motore di archiviazione tramite terminale

Esegui ALTER TABLE comando nella shell MySQL per convertire il motore di archiviazione da MyISAM a InnoDB e viceversa.

  • Per convertire InnoDB in MyISAM, esegui:
ALTER TABLE database_name.table_name ENGINE=MyISAM;
  • Per convertire MyISAM in InnoDB, esegui:
ALTER TABLE database_name.table_name ENGINE=InnoDB;

Il terminale stampa un messaggio di conferma.

Convertire il motore di archiviazione utilizzando phpMyAdmin

Esistono due modi per convertire il motore di archiviazione in phpMyAdmin:

  • Utilizzo delle Operazioni sui tavoli menu.
  • Esecuzione di una query.

Utilizzo del menu Operazioni

1. Selezionare il database preferito da un menu database.

2. Scegli una tabella per la quale desideri modificare il motore di archiviazione e seleziona Altro menu a tendina.

3. Fai clic su Operazioni per accedere al menu.


4. Individua il Motore di archiviazione impostazione nella Tabella opzioni e fare clic sul motore di archiviazione per caricare il menu a discesa contenente vari motori di archiviazione. Seleziona InnoDB dall'elenco e fare clic su Vai per salvare la modifica.

Esecuzione di una query

1. Accedi a SQL centro di comando per il database preferito.

2. Eseguire ALTER TABLE comando nella shell MySQL per convertire il motore di archiviazione.

Per convertire in MyISAM, esegui:

ALTER TABLE table_name ENGINE=MyISAM;

Per convertire in InnoDB, esegui:

ALTER TABLE.table_name ENGINE=InnoDB;

3. Fare clic su Vai pulsante per eseguire la query.

Hai convertito correttamente il motore di archiviazione.


Cent OS
  1. Hadoop vs Spark – Confronto dettagliato

  2. Qual è la differenza tra InnoDB e MyISAM?

  3. MySQL:conversione in dati per tabella per InnoDB

  4. MySQL Incremental Backup - Backup e ripristino point-in-time di database InnoDB e MyIsam

  5. Prometheus vs Zabbix:confronto degli strumenti di monitoraggio della rete

Che cos'è un database?

Spiegazione dei server Big Data

API SOAP vs REST:confronto testa a testa

12 Strumenti di integrazione dei dati esaminati

Comprendere le tecniche di modellazione dei dati NoSQL

Oracle Data Integrator (ODI) su CentOS 8