Direttorju tal-Artikoli
Il-magna tal-ħażna ta' tabella ta' database hija bħall-magna ta' karozza; il-bdil tal-magna jibdel immedjatament il-prestazzjoni u l-karatteristiċi. Ħafna nies jaħsbu li database hija biss għall-ħażna tad-dejta, imma meta fil-fatt tibda taħdem fuqha... InnoDB 转成 MyISAMImbagħad biss tiskopri s-sigrieti moħbija warajha.
Għaliex xi ħadd ikun irid jaqleb minn InnoDB għal MyISAM?
F'ħafna xenarji, MyISAM huwa aktar mgħaġġel, speċjalment għal applikazzjonijiet li jeħtieġu ħafna qari u ftit kitba bħal databases ta' logs u statistiċi.
Il-mekkaniżmu ta' qfil fil-livell tat-tabella tiegħu fil-fatt jaħdem bla xkiel ħafna taħt konkorrenza baxxa.
Barra minn hekk, il-ħażna tal-fajls ta' MyISAM hija aktar intuwittiva; waħda .MYD Aħżen id-dejta, waħda .MYI Il-ħażna tal-indiċijiet, il-migrazzjoni, u l-backup huma kollha konvenjenti ħafna.
Madankollu, l-appoġġ ta' InnoDB għat-tranżazzjonijiet u ċ-ċwievet barranin huwa kważi neċessità f'xenarji ta' negozju kumplessi.
Għalhekk, trid tara jekk in-negozju tiegħek fil-fatt jeħtieġx dawn il-karatteristiċi qabel ma tagħmel it-tranżizzjoni.
Kmand ewlieni: ALTER TABLE
Biex tikkonverti tabella waħda minn InnoDB għal MyISAM, għandek bżonn linja waħda biss ta' kodiċi:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Wara li titlesta l-eżekuzzjoni, il-magna tal-ħażna tat-tabella tinxtegħel.
Mhux sempliċi dan?
Konverżjoni tal-lott: Ġenerazzjoni awtomatika ta' skript
Jekk għandek għexieren jew saħansitra mijiet ta' tabelli, il-modifika tagħhom manwali żgur mhux prattiku.
F'dan il-punt, tista' tintuża mistoqsija waħda biex tiġġenera awtomatikament dikjarazzjonijiet ta' konverżjoni f'lottijiet:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Wara li jaħdem, se joħroġ mazz ta'... ALTER TABLE ... Dikjarazzjoni.
Ikkopja dawn id-dikjarazzjonijiet u esegwihom kollha f'daqqa biex tlesti l-konverżjoni tal-lott f'daqqa.
Dan huwa dak li hu magħruf bħala "konverżjoni awtomatizzata f'lottijiet".
Valutazzjoni tar-riskju qabel il-konverżjoni

Restrizzjonijiet taċ-ċwievet barranin
InnoDB jappoġġja ċwievet barranin, filwaqt li MyISAM ma jappoġġjahomx xejn.
Ladarba l-konverżjoni tkun kompluta, ir-restrizzjonijiet taċ-ċavetta barranija se jitwarrbu.
Jekk in-negozju tiegħek jiddependi fuq tħassir jew aġġornamenti kaskati, il-loġika se tfalli kompletament wara l-konverżjoni.
Appoġġ għat-tranżazzjonijiet
InnoDB għandu tranżazzjonijiet u jappoġġjahom. COMMIT 和 ROLLBACK.
MyISAM m'għandux tranżazzjonijiet, serraturi fil-livell tat-tabella biss.
Wara l-konverżjoni, il-kodiċi kollu relatat mat-tranżazzjoni ma jibqax validu, u r-rollback ma jkunx possibbli f'każ ta' eċċezzjoni.
Prestazzjoni tal-konkorrenza
InnoDB juża locking fil-livell tar-ringiela, filwaqt li MyISAM juża locking fil-livell tat-tabella.
F'xenarji ta' konkorrenza għolja, MyISAM ta' spiss jissakkar it-tabelli, u dan iwassal għal konġestjonijiet fil-prestazzjoni.
Karatteristiċi tal-indiċi
在 MySQL Qabel il-verżjoni 5.6, MyISAM kellu l-indiċi sħiħ tiegħu stess.
Iżda fl MySQL L-indiċjar tat-test sħiħ diġà huwa appoġġjat fil-verżjonijiet 5.6 u 10+ ta' MariaDB u InnoDB.
Għalhekk, sakemm ma tkunx qed tuża verżjoni eqdem, m'hemmx bżonn li taqleb għal MyISAM għall-indiċjar tat-test sħiħ.
Proċess tal-Aħjar Prattika
Dejta ta' backup Qabel ma tikkonverti, kun żgur li tesporta.
.sqlIl-fajls huma maħżuna biex jiġi żgurat li jistgħu jiġu restawrati fi kwalunkwe ħin.Struttura tal-Lista ta' Kontroll Uża l-kmand li ġej biex tivverifika jekk teżistix ċavetta barranija:
SHOW CREATE TABLE `你的表名`;Agħmel konverżjoni 使用
ALTER TABLEAlternattivament, jistgħu jintużaw skripts tal-lott biex titlesta l-konverżjoni.Iċċekkja l-istat tas-saħħa Wara li titlesta l-konverżjoni, mexxi:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Dan jikkonferma li t-tabella qed tiffunzjona sew u tirrilaxxa frammenti.
Metodu ta' rkupru invers
Jekk jiġu osservati degradazzjoni tal-prestazzjoni jew problemi fil-loġika tan-negozju wara l-konverżjoni, tista' terġa' lura għal InnoDB fi kwalunkwe ħin:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Dan huwa dak li jissejjaħ "operazzjoni riversibbli", li tagħtik triq 'il barra.
Perspettivi awtorevoli ċċitati
Skond Dokumentazzjoni Uffiċjali tal-MySQL Spjegazzjoni:
"Kostruzzjoni taċ-ċavetta barranija"aiL-ntijiet huma appoġġjati biss minn InnoDB. Jekk tikkonverti tabella għal MyISAM, iċ-ċwievet barranin kollha se jiġu injorati.
——Manwal ta' Referenza MySQL, Kapitlu 14.6.6 Restrizzjonijiet taċ-Ċavetta Barranija
Din id-dikjarazzjoni tgħidilna b'mod ċar li ċ-ċwievet barranin huma kompletament invalidi f'MyISAM.
u Dokumentazzjoni Uffiċjali ta' MariaDB Ġie enfasizzat ukoll li:
"MyISAM ma jappoġġjax tranżazzjonijiet. Applikazzjonijiet li jiddependu fuq l-integrità transazzjonali m'għandhomx jużaw MyISAM."
——Bażi tal-Għarfien MariaDB, Magni tal-Ħażna
Huwa għalhekk li trid taħseb darbtejn qabel ma tagħmel bidla.
Il-Punt ta' Vista u l-Konklużjoni Tiegħi
Il-konverżjoni ta' InnoDB għal MyISAM hija bħas-sostituzzjoni tal-magna ta' karozza lussuża b'magna ta' trakk.
Jista' jaħdem, iżda jaħdem b'mod kompletament differenti.
Jekk in-negozju tiegħek jinvolvi mistoqsijiet statistiċi ħfief, il-veloċità u s-sempliċità ta' MyISAM jistgħu jkunu aktar adattati.
Madankollu, jekk is-sistema tiegħek tiddependi fuq tranżazzjonijiet u ċwievet barranin, il-konverżjoni tagħhom bl-addoċċ hija bħal li tneħħi l-airbag.
Għalhekk, l-għerf veru ma jinsabx f’li nfittxu l-veloċità bl-addoċċ, iżda fil-bilanċ bejn l-istabbiltà u l-prestazzjoni.
L-għażla tad-database tiddetermina r-ruħ tas-sistema.
Il-ħakma tal-ħiliet tal-bdil tal-magni tal-ħażna mhix biss dimostrazzjoni tal-abbiltà teknika, iżda wkoll elevazzjoni tal-ħsieb arkitettoniku.
Jekk qed tikkunsidra konverżjoni bl-ingrossa, jekk jogħġbok wettaq valutazzjoni komprensiva tar-riskju l-ewwel.
Mexxi l-ambjent tat-test darba biex tissimula xenarji reali tan-negozju.
Wara li tikkonferma li kollox huwa korrett, eżegwixxih fl-ambjent tal-produzzjoni.
Id-databases mhumiex ġugarelli; huma l-qalba tad-dejta tal-intrapriża.
U int dak li tikkontrolla r-ritmu ta' qalbek.
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ L-artiklu "Kif Tikkonverti f'lott it-Tabelli InnoDB għal Tabelli MyISAM fid-Databases MySQL/MariaDB?" maqsum hawn jista' jkun ta' għajnuna għalik.
Merħba biex taqsam il-link ta' dan l-artikolu:https://www.chenweiliang.com/cwl-34157.html
