Cumu cunfigurà e basi di dati MySQL/MariaDB per cunvertisce in batch e tabelle InnoDB in tabelle MyISAM?

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

Cumu cunfigurà e basi di dati MySQL/MariaDB per cunvertisce in batch e tabelle InnoDB in tabelle MyISAM?

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. COMMITROLLBACK.

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

  1. Dati di salvezza Prima di cunvertisce, assicuratevi di esportà. .sql I fugliali sò almacenati per assicurà ch'elli possinu esse restaurati in ogni mumentu.

  2. Struttura di a lista di cuntrollu Aduprate u cumandamentu seguente per verificà s'ellu esiste una chjave straniera:

    SHOW CREATE TABLE `你的表名`;
    
  3. Eseguisce a cunversione 使用 ALTER TABLE In alternativa, i script batch ponu esse aduprati per compie a cunversione.

  4. 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.

发表 评论

U vostru indirizzu email ùn serà micca publicatu. I campi richiesti sò aduprati * Etichetta

Articulu Directory
Libru di Top