Articulu Directory
U mutore di almacenamentu di una tavula di basa di dati hè cum'è u mutore di una vittura; cambià u mutore cambia subitu e prestazioni è e caratteristiche. Parechje persone pensanu chì una basa di dati hè solu per almacenà dati, ma quandu si principia à travaglià ci sopra... InnoDB Trasforma in MyISAMSolu tandu scuprirete i sicreti piattati daretu à questu.
Perchè qualchissia vuleria passà da InnoDB à MyISAM?
In parechji scenarii, MyISAM hè più veloce, in particulare per l'applicazioni chì richiedenu assai lettura è pocu scrittura cum'è e basi di dati di log è statistiche.
U so mecanismu di chjusura à livellu di tavula funziona in realtà assai bè in cundizioni di bassa cuncurrenza.
Inoltre, u almacenamentu di fugliali di MyISAM hè più intuitivu; unu .MYD Archivà dati, unu .MYI U almacenamentu di l'indici, a migrazione è a copia di salvezza sò tutti assai cunvenienti.
Tuttavia, u supportu di transazzione è chjave straniera di InnoDB hè guasi una necessità in scenarii cummerciali cumplessi.
Dunque, duvete capisce se a vostra attività hà veramente bisognu di queste funzionalità prima di fà a transizione.
Cumandamentu principale: ALTER TABLE
Per cunvertisce una sola tabella da InnoDB à MyISAM, basta una sola linea di codice:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Dopu chì l'esecuzione hè cumpleta, u mutore di almacenamentu di a tavula serà cambiatu.
Ùn hè micca simplice?
Cunversione in batch: Generazione automatica di script
Sè vo avete decine o ancu centinaie di tavule, mudificà li manualmente ùn hè certamente micca praticu.
À questu puntu, una sola dumanda pò esse aduprata per generà automaticamente dichjarazioni di cunversione in batch:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Dopu à l'esecuzione, darà un saccu di... ALTER TABLE ... Dichjarazione.
Cupiate queste dichjarazioni è eseguiteli tutte in una volta per compie a cunversione in batch in una volta.
Questu hè ciò chì si chjama "cunversione batch automatizata".
Valutazione di u risicu prima di a cunversione

Vincoli di chjave straniera
InnoDB supporta e chjave straniere, mentre MyISAM ùn li supporta micca.
Una volta chì a cunversione hè cumpleta, i vincoli di chjave straniera seranu scartati.
Sè a vostra attività si basa nantu à eliminazioni o aghjurnamenti in cascata, a logica fallirà cumpletamente dopu a cunversione.
Supportu di transazzione
InnoDB hà transazzioni è li supporta. COMMIT 和 ROLLBACK.
MyISAM ùn hà micca transazzioni, solu serrature à livellu di tabella.
Dopu a cunversione, tuttu u codice ligatu à e transazzioni diventerà invalidu, è u rollback serà impussibile in casu d'eccezzione.
Prestazione di cuncurrenza
InnoDB usa u bloccu à livellu di riga, mentre chì MyISAM usa u bloccu à livellu di tabella.
In scenarii di alta cuncurrenza, MyISAM blocca spessu e tabelle, ciò chì porta à colli di buttiglia di prestazioni.
Funzioni di l'indice
in MySQL Prima di a versione 5.6, MyISAM avia u so propiu indice di testu cumpletu.
Ma in MySQL L'indicizazione di testu cumpletu hè digià supportata in e versioni 5.6 è 10+ di MariaDB è InnoDB.
Dunque, à menu chì ùn aduprate una versione più vechja, ùn ci hè bisognu di passà à MyISAM per l'indicizazione di testu cumpletu.
Prucessu di e Migliori Pratiche
Dati di salvezza Prima di cunvertisce, assicuratevi di esportà.
.sqlI fugliali sò almacenati per assicurà ch'elli possinu esse restaurati in ogni mumentu.Struttura di a lista di cuntrollu Aduprate u cumandamentu seguente per verificà s'ellu esiste una chjave straniera:
SHOW CREATE TABLE `你的表名`;Eseguisce a cunversione 使用
ALTER TABLEIn alternativa, i script batch ponu esse aduprati per compie a cunversione.Verificà u statu di salute Dopu chì a cunversione hè cumpleta, eseguite:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Questu cunfirma chì a tavula funziona currettamente è libera frammenti.
Metudu di ricuperazione inversa
Sè si osservanu prublemi di degradazione di e prestazioni o di logica cummerciale dopu a cunversione, pudete vultà à InnoDB in ogni mumentu:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Questu hè ciò chì si chjama "operazione reversibile", chì vi dà una via d'uscita.
Punti di vista autorevoli citati
Secondu Documentazione ufficiale di MySQL Spiegazione:
"Custruzzione di chjave straniera"aiI nts sò supportati solu da InnoDB. Sè cunvertite una tabella in MyISAM, tutte e chjave straniere seranu ignorate.
——Manuale di riferimentu MySQL, Capitulu 14.6.6 Vincoli di chjave straniera
Questa dichjarazione ci dice chjaramente chì e chjave straniere sò cumpletamente invalide in MyISAM.
è Documentazione ufficiale di MariaDB Hè statu ancu messu in risaltu chì:
"MyISAM ùn supporta micca e transazzioni. L'applicazioni chì si basanu nantu à l'integrità transazionale ùn devenu micca aduprà MyISAM."
——Base di Cunniscenza MariaDB, Motori di Archiviazione
Hè per quessa chì ci vole à pensà duie volte prima di fà un cambiamentu.
U mo puntu di vista è a mo cunclusione
Cunvertisce InnoDB in MyISAM hè cum'è rimpiazzà u mutore di una vittura di lussu cù un mutore di camion.
Pò corre, ma corre in un modu cumpletamente diversu.
Sè a vostra attività implica dumande statistiche leggere, a velocità è a simplicità di MyISAM ponu esse più adatte.
Tuttavia, se u vostru sistema si basa nantu à transazzioni è chjave straniere, cunvertisce li imprudentemente hè cum'è caccià l'airbag.
Dunque, a vera saviezza ùn stà micca in a ricerca cieca di a velocità, ma in l'equilibriu di a stabilità è di e prestazioni.
A scelta di a basa di dati determina l'anima di u sistema.
Maestru di e cumpetenze di cambià i motori di almacenamiento ùn hè micca solu una dimostrazione di capacità tecnica, ma ancu una elevazione di u pensamentu architettonicu.
Sè vo circate una cunversione in massa, per piacè fate prima una valutazione cumpleta di i risichi.
Eseguite l'ambiente di prova una volta per simulà scenarii cummerciali reali.
Dopu avè cunfirmatu chì tuttu hè currettu, eseguite u cumandamentu in l'ambiente di pruduzzione.
E basi di dati ùn sò micca ghjoculi; sò u core di i dati di l'impresa.
È tù sì quellu chì cuntrolla u ritmu di u to core.
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ L'articulu "Cumu cunvertisce in batch e tabelle InnoDB in tabelle MyISAM in e basi di dati MySQL/MariaDB?" spartutu quì pò esse utile per voi.
Benvenuti à sparte u ligame di stu articulu:https://www.chenweiliang.com/cwl-34157.html
