Artikulo Direktoryo
Ang storage engine sa usa ka database table sama sa makina sa usa ka sakyanan; ang pag-ilis sa makina diha-diha dayon makausab sa performance ug mga kinaiya. Daghang mga tawo ang naghunahuna nga ang usa ka database alang lamang sa pagtipig sa datos, apan kung imong sulayan gyud nga i-convert ang InnoDB ngadto sa MyISAM , imong madiskobrehan ang tinago nga mga pagkakomplikado sa luyo niini.
Ngano nga adunay gusto nga mobalhin gikan sa InnoDB ngadto sa MyISAM?
Sa daghang mga senaryo, ang MyISAM mas paspas, labi na alang sa mga aplikasyon nga bug-at og pagbasa ug gaan og pagsulat sama sa mga database sa log ug istatistika.
Ang mekanismo sa pag-lock niini nga lebel sa lamesa aktuwal nga nagdagan nga hapsay kaayo ubos sa hinay nga dungan nga paggamit.
Dugang pa, ang pagtipig sa file sa MyISAM mas sayon gamiton; usa .MYD Tipigi ang datos, usa .MYI Ang pagtipig sa mga index, pagbalhin, ug pag-backup tanan sayon kaayo.
Apan, ang suporta sa transaksyon ug langyaw nga yawe sa InnoDB halos usa ka kinahanglanon sa komplikado nga mga senaryo sa negosyo.
Busa, kinahanglan nimong mahibal-an kung ang imong negosyo nanginahanglan ba gyud niini nga mga bahin sa dili pa mohimo sa transisyon.
Kinauyokan nga sugo: ALTER TABLE
Aron mabag-o ang usa ka lamesa gikan sa InnoDB ngadto sa MyISAM, usa ra ka linya sa code ang kinahanglan nimo:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Human makompleto ang pagpatuman, ang storage engine sa lamesa ibalhin.
Dili ba kana prangka?
Pag-convert sa batch: Awtomatikong paghimo og script
Kon ikaw adunay dosena o bisan gatusan ka mga lamesa, ang pag-usab niini sa mano-mano dili gyud praktikal.
Niini nga punto, usa ra ka pangutana ang magamit aron awtomatikong makamugna og mga batch conversion statement:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Human sa pagdagan, kini mopagawas ug daghang... ALTER TABLE ... Pahayag.
Kopyaha kini nga mga pahayag ug ipatuman kini tanan sa usa ka higayon aron makompleto ang batch conversion sa usa ka higayon.
Mao kini ang gitawag nga "automated batch conversion".
Pagtimbang-timbang sa risgo sa dili pa ang pagkakabig

Mga limitasyon sa langyaw nga yawe
Gisuportahan sa InnoDB ang mga foreign key, samtang ang MyISAM wala gyud nagsuporta niini.
Kung makabig na, ang mga foreign key constraints ilabay direkta.
Kon ang imong negosyo nagsalig sa sunod-sunod nga pagtangtang o pag-update, ang lohika hingpit nga mapakyas human sa pagkakabig.
Suporta sa transaksyon
Ang InnoDB adunay mga transaksyon ug gisuportahan kini. COMMIT ug ROLLBACK.
Ang MyISAM walay mga transaksyon, mga kandado lang sa lebel sa lamesa.
Human sa conversion, ang tanang code nga may kalabotan sa transaksyon mahimong dili balido, ug ang rollback dili na mahimo kung adunay eksepsiyon.
Pagpasundayag sa dungan nga kwarta
Ang InnoDB naggamit ug row-level locking, samtang ang MyISAM naggamit ug table-level locking.
Sa mga senaryo nga taas og concurrency, kanunay nga gi-lock sa MyISAM ang mga lamesa, nga mosangput sa mga bottleneck sa performance.
Mga bahin sa indeks
Sa wala pa ang MySQL 5.6, ang MyISAM adunay talagsaon nga full-text index.
Apan, sa MySQL 5.6+ ug MariaDB 10+, gisuportahan na sa InnoDB ang full-text indexing.
Busa, gawas kon naggamit ka og mas daan nga bersyon, dili na kinahanglan nga mobalhin sa MyISAM para sa full-text indexing.
Proseso sa Labing Maayong Pagpraktis
Pag-backup sa datos Sa dili pa mag-convert, siguroha nga i-export kini.
.sqlAng mga file gitipigan aron masiguro nga kini mapasig-uli bisan unsang orasa.Susiha ang istruktura sa lamesa gamit ang mosunod nga sugo aron makita kung adunay mga langyaw nga yawe:
SHOW CREATE TABLE `你的表名`;Paghimo og pagkakabig 使用
ALTER TABLESa laing paagi, ang mga batch script mahimong gamiton aron makompleto ang pagkakabig.Susiha ang kahimtang sa panglawas . Human sa pagkakabig, padagana ang:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Kini nagpamatuod nga ang lamesa naglihok sa husto ug nagpagawas sa mga fragment.
Pamaagi sa pagbaliktad sa pagkaayo
Kon ang pagkadaot sa performance o mga isyu sa business logic maobserbahan human sa conversion, mahimo kang mobalik sa InnoDB bisan unsang orasa:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Mao kini ang gitawag nga "reversible operation," nga naghatag kanimo og kagawasnan.
Mga awtoridad nga panglantaw nga gikutlo
Sumala sa opisyal nga dokumentasyon sa MySQL :
"Konstraksyon sa langyaw nga yawe"aiAng mga nts gisuportahan lamang sa InnoDB. Kung imong i-convert ang usa ka table ngadto sa MyISAM, ang tanang foreign keys dili tagdon.
——Manwal sa Reperensya sa MySQL, Kapitulo 14.6.6 Mga Limitasyon sa Langyaw nga Yawe
Kini nga pahayag klaro nga nagsulti kanato nga ang mga langyaw nga yawe hingpit nga dili balido sa MyISAM.
Ang opisyal nga dokumentasyon sa MariaDB nagpasiugda usab:
"Ang MyISAM dili mosuporta sa mga transaksyon. Ang mga aplikasyon nga nagsalig sa transactional integrity dili angay mogamit sa MyISAM."
——Base sa Kahibalo sa MariaDB, Mga Makina sa Pagtipig
Mao nang kinahanglan gyud nga maghunahuna ka pag-ayo sa dili pa mobalhin.
Ang Akong Panglantaw ug Konklusyon
Ang pag-convert sa InnoDB ngadto sa MyISAM sama ra sa pag-ilis sa makina sa usa ka luhong sakyanan og makina sa trak.
Mahimo kining modagan, apan lahi kaayo ang paagi sa pagdagan niini.
Kon ang imong negosyo naglambigit og gaan nga mga pangutana sa estadistika, ang katulin ug kasayon sa MyISAM mahimong mas angay.
Apan, kon ang imong sistema nagsalig sa mga transaksyon ug mga langyaw nga yawe, ang padalos-dalos nga pag-convert niini sama ra sa pagtangtang sa airbag.
Busa, ang tinuod nga kaalam wala mag-agad sa pagkabuta sa pagtinguha sa katulin, apan sa pagbalanse sa kalig-on ug pasundayag.
Ang pagpili sa database mao ang magtino sa kalag sa sistema.
Ang pagka-master sa kahanas sa pag-switch sa mga storage engine dili lamang usa ka demonstrasyon sa teknikal nga abilidad, apan usa usab ka pag-uswag sa panghunahuna sa arkitektura.
Kon nagkonsiderar ka sa bulk conversion, palihug pagpahigayon una og komprehensibo nga risk assessment.
Padagana ang test environment kausa aron ma-simulate ang tinuod nga mga senaryo sa negosyo.
Human makumpirma nga husto ang tanan, ipatuman ang sugo sa palibot sa produksiyon.
Ang mga database dili mga dulaan; kini ang kasingkasing sa datos sa negosyo.
Ug ikaw ang nagkontrol sa ritmo sa imong kasingkasing.
Hinaut nga ang artikulong "Unsaon Pag-Batch Convert sa InnoDB Tables ngadto sa MyISAM Tables sa MySQL/MariaDB Databases?" nga gipaambit sa blog ni Chen Weiliang ( https://www.chenweiliang.com/ ) makatabang kanimo.
Ayaw pagpanuko sa pagpaambit niini nga link sa artikulo: https://www.chenweiliang.com/cwl-34157.html
