Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 14231|Risposta: 1

[Fonte] La differenza tra engine=innodb e engine=myisam in mysql

[Copiato link]
Pubblicato su 16/07/2017 11:04:57 | | |
1/ISAM

ISAM è un approccio ben definito e collaudato nella gestione delle tabelle dati, progettato con il database interrogato molto più spesso di quanto venga aggiornato. Di conseguenza, ISAM esegue le letture rapidamente e non occupa molte risorse di memoria e archiviazione. I due principali svantaggi di ISAM sono che non supporta l'elaborazione delle transazioni e non è tollerante ai guasti: se il tuo hard disk va in crash, i file dati non possono essere recuperati. Se usi ISAM per applicazioni mission-critical, devi sempre fare il backup di tutti i tuoi dati in tempo reale, e MySQL può supportare tali applicazioni di backup grazie alla sua funzione di replica.

2/InnoDB

Fornisce una funzione di controllo delle transazioni, che garantisce che una serie di comandi venga eseguita con successo o, quando si verifica un errore di comando, il risultato di tutti i comandi venga annullato; si può immaginare che la capacità di controllo delle transazioni sia molto importante nell'e-banking. Supporto per COMMIT, ROLLBACK e altre funzionalità di transazione. L'ultima versione di Mysql sta già pianificando di rimuovere il supporto per BDB a favore di InnoDB.

MyIASM è una nuova versione delle tabelle IASM con le seguenti estensioni:
Portabilità a livello binario.
Indice della colonna NULL.
Ci sono meno frammenti per le righe variabili rispetto alle tabelle ISAM.
Supporto per file grandi.
Compressione indice migliore.
È meglio avere una distribuzione statistica?
Migliore e più veloce auto_increment elaborazione.

Ecco alcuni dettagli e differenze specifiche nell'implementazione:

1. InnoDB non supporta indici di tipo FULLTEXT.
2. Le tabelle non vengono salvate in InnoDB
righe specifiche, cioè esegue select count(*) da
InnoDB scansiona l'intera tabella per calcolare quante righe ci sono, ma MyISAM legge semplicemente le righe salvate. Si noti che quando l'istruzione count(*) contiene
dove condizione, il funzionamento di entrambe le tabelle è lo stesso.
3. Per campi di AUTO_INCREMENT tipo, l'indice con solo quel campo deve essere incluso in InnoDB, ma nella tabella MyISAM è possibile creare un indice federato con altri campi.
4.CANCELLA
FROM Table, InnoDB non ricrea la tabella, ma la elimina riga per riga.
5. TABELLA DI CARICO DA
L'operazione MASTER non funziona per InnoDB, la soluzione è prima cambiare la tabella InnoDB in MyISAM, importare i dati e poi cambiarli con la tabella InnoDB, ma non è applicabile alle tabelle che utilizzano funzionalità aggiuntive di InnoDB (come chiavi estere).

Inoltre, il blocco di riga di una tabella InnoDB non è assoluto; se MySQL non può determinare l'ambito da scansionare durante l'esecuzione di un'istruzione SQL, la tabella InnoDB bloccherà anche l'intera tabella, come ad esempio Update
Set di tabelle num=1 dove nome come "a%"

Nessuna tabella è onnipotente, solo scegliendo il tipo di tabella appropriato per il tipo di business possiamo massimizzare i vantaggi di prestazioni di MySQL.

MySQL
Quando l'Amministratore crea un database, la tabella si riporta di default al tipo InnoDB.

InnoDB, il mio ISAM
Qual è la differenza tra i due tipi: il tipo MyISAM non supporta elaborazioni avanzate come l'elaborazione delle transazioni, mentre il tipo InnoDB sì.
Le tabelle del tipo MyISAM enfatizzano le prestazioni, che si comportano diversi gradi più velocemente del tipo InnoDB, ma non forniscono supporto transazionale, mentre InnoDB fornisce funzionalità avanzate al database come supporto transazionale, chiavi estere, ecc.

I file dati binari di tipo MyISAM possono essere migrati tra diversi sistemi operativi. Cioè, può essere copiato direttamente da un sistema Windows a un sistema Linux.

Modifica il tipo di motore della tabella:

ALTER
TABLE tablename ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Metodo di Accesso Sequenziale
È il metodo standard per memorizzare record e file. Rispetto ad altri motori di storage, MyISAM ha la maggior parte degli strumenti per controllare e riparare tabelle.
Le tabelle MyISAM possono essere compresse e supportano la ricerca a testo intero. Non sono sicure dal punto di vista transazionale e non supportano chiavi estere. Se qualcosa viene riportato indietro, causerà un rollback incompleto e non è atomico. Se vengono eseguite un gran numero di esecuzioni
TheSELECT, MyISAM è la scelta migliore.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

Per i tipi InnoDB che supportano cose, la ragione principale che influisce sulla velocità è che l'impostazione predefinita AUTOCOMMIT è attivata e il programma non chiama esplicitamente BEGIN
Avvia una transazione, con conseguente un commit automatico per ogni inserimento, il che influisce seriamente sulla velocità. Puoi chiamare start prima che SQL venga eseguito, e più SQL formano una cosa (anche se l'autocommit si attiva
può anche essere attivata), il che migliorerà notevolmente le prestazioni.

1. Visualizzare le informazioni della tabella, inclusi il tipo di motore utilizzato, la codifica dei caratteri, la struttura delle tabelle, ecc

Usa questo comando

MySQL>
mostra crea tabella T1; --T1 è il nome della tabella

2.
Il seguente comando può essere eseguito per passare le tabelle non transazionali alle transazioni (i dati non si perdono), le tabelle innodb sono più sicure rispetto alle tabelle myisam:
Alter Table T1
type=innodb; --T1 è il nome della tabella

3.
La tabella innodb non può essere table_name con il comando tavola riparazione e myisamchk -r
Ma puoi usare una tabella di controllo
t1, e mysqlcheck [OPTIONS] database [tabelle]

4.
I seguenti parametri sono stati aggiunti alla riga di comando per avviare il database mysql, in modo che tutte le tabelle dati mysql appena rilasciate utilizzino di default le transazioni (
Influisce solo sulla dichiarazione create. )
--default-table-type=InnoDB

5.
La modifica temporanea del tipo di tabella predefinito può essere effettuata da:
set table_type=InnoDB;

MyISAM
Vantaggi: velocità elevata, meno spazio su disco occupato; L'utilizzo del disco di un database o di una tabella può essere trovato verificando la dimensione del file corrispondente (cartella) tramite il sistema operativo oppure utilizzando l'istruzione SQL SHOW TABLE STATUS
Contro: Nessun meccanismo di integrità dei dati, cioè nessun supporto per transazioni e chiavi estere

InnoDB
Vantaggi: Supportare transazioni e chiavi estere, e completare il meccanismo di integrità dei dati. Puoi usare MOSTRA STATO DELLA TABELLA per controllare l'occupazione del disco di una libreria o di una tabella
Svantaggi: velocità ultra-lenta, grande spazio su disco occupato; Tutte le librerie sono memorizzate in uno (di solito) o più file, e il sistema operativo non può determinare quanto spazio abbia una libreria o una tabella

BDB
Vantaggi: Supporta le transazioni, non supporta chiavi estere, perché sulla base del supporto alle transazioni, le chiavi estere possono essere implementate indirettamente sul lato client del database (che può essere il lato server del cliente finale, come PHP), quindi l'integrità dei dati è ancora garantita;
Svantaggi: velocità bassa, alto utilizzo del disco; Non puoi interrogare l'occupazione dello spazio di un database o di una tabella tramite MOSTRA LO STATO DELLA TABELLA. Il sistema operativo può comprendere la dimensione della cartella corrispondente della libreria o del file corrispondente della tabella, ma poiché la tabella BDB deve sempre generare un file di log, e l'occupazione effettiva del disco dovrebbe includere il file di log, la dimensione di una libreria o di una tabella è sempre inferiore allo spazio effettivamente occupato dal sistema operativo.




Precedente:Gli attributi del tipo di campo della tabella MySQL sono spiegati in dettaglio
Prossimo:Strumento di accesso a database PHP Medoo
 Padrone di casa| Pubblicato su 16/07/2017 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com