Artikelgids
Die stoor-enjin van 'n databasistabel is soos die enjin van 'n motor; die verandering van die enjin verander onmiddellik die werkverrigting en eienskappe. Baie mense dink dat 'n databasis net vir die stoor van data is, maar wanneer jy eintlik daaraan begin werk... InnoDB 转成 MyISAMSlegs dan sal jy die verborge geheime daaragter ontdek.
Waarom sou iemand van InnoDB na MyISAM wil oorskakel?
In baie scenario's is MyISAM vinniger, veral vir lees-swaar en skryf-ligte toepassings soos log- en statistiekdatabasisse.
Die sluitmeganisme op tafelvlak loop eintlik baie glad onder lae gelyktydigheid.
Boonop is MyISAM se lêerberging meer intuïtief; een .MYD Stoor data, een .MYI Die berging van indekse, migrasie en rugsteun is alles baie gerieflik.
InnoDB se transaksie- en buitelandse sleutelondersteuning is egter amper 'n noodsaaklikheid in komplekse sakescenario's.
Daarom moet jy uitvind of jou besigheid werklik hierdie funksies benodig voordat jy die oorgang maak.
Kernopdrag: ALTER TABLE
Om 'n enkele tabel van InnoDB na MyISAM om te skakel, benodig jy slegs een reël kode:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Nadat die uitvoering voltooi is, sal die tabel se stoorenjin oorgeskakel word.
Is dit nie eenvoudig nie?
Bondelomskakeling: Outomatiese skripgenerering
As jy dosyne of selfs honderde tabelle het, is dit beslis nie prakties om hulle handmatig te wysig nie.
Op hierdie stadium kan 'n enkele navraag gebruik word om outomaties bondelomskakelingstellings te genereer:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Nadat dit gehardloop het, sal dit 'n klomp ... uitvoer. ALTER TABLE ... Verklaring.
Kopieer hierdie stellings en voer hulle almal gelyktydig uit om die bondelomskakeling in een slag te voltooi.
Dit staan bekend as "outomatiese bondelomskakeling".
Risikobepaling voor omskakeling

Buitelandse sleutelbeperkings
InnoDB ondersteun vreemde sleutels, terwyl MyISAM hulle glad nie ondersteun nie.
Sodra die omskakeling voltooi is, sal die vreemde sleutelbeperkings weggegooi word.
As jou besigheid staatmaak op kaskade-uitveeding of opdaterings, sal die logika heeltemal faal na die omskakeling.
Transaksieondersteuning
InnoDB het transaksies en ondersteun hulle. COMMIT 和 ROLLBACK.
MyISAM het nie transaksies nie, slegs tabelvlak-slotte.
Na die omskakeling sal alle transaksieverwante kode ongeldig word, en terugrol sal onmoontlik wees in die geval van 'n uitsondering.
Gelyktydigheidsprestasie
InnoDB gebruik ryvlak-sluiting, terwyl MyISAM tabelvlak-sluiting gebruik.
In hoë-gelyktydigheidscenario's sluit MyISAM gereeld tabelle, wat lei tot prestasiebottelnekke.
Indekskenmerke
在 MySQL Voor weergawe 5.6 het MyISAM sy eie volteksindeks gehad.
Maar in MySQL Volteksindeksering word reeds ondersteun in weergawes 5.6 en 10+ van MariaDB en InnoDB.
Daarom, tensy jy 'n ouer weergawe gebruik, is daar geen nodigheid om oor te skakel na MyISAM vir volteksindeksering nie.
Beste Praktyk Proses
Rugsteundata Maak seker dat jy uitvoer voordat jy omskakel.
.sqlLêers word gestoor om te verseker dat hulle te eniger tyd herstel kan word.Kontrolelysstruktuur Gebruik die volgende opdrag om te kyk of 'n vreemde sleutel bestaan:
SHOW CREATE TABLE `你的表名`;Voer omskakeling uit 使用
ALTER TABLEAlternatiewelik kan bondelskripte gebruik word om die omskakeling te voltooi.Kontroleer gesondheidstatus Nadat die omskakeling voltooi is, voer uit:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Dit bevestig dat die tabel korrek funksioneer en stel fragmente vry.
Omgekeerde herstelmetode
Indien prestasieverswakking of probleme met besigheidslogika na die omskakeling waargeneem word, kan u te eniger tyd terugskakel na InnoDB:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Dit word "omkeerbare operasie" genoem, wat jou 'n uitweg gee.
Gesaghebbende standpunte aangehaal
Volgens MySQL Amptelike Dokumentasie Verduideliking:
"Buitelandse sleutelkonstruksie"aints word slegs deur InnoDB ondersteun. As jy 'n tabel na MyISAM omskakel, sal alle vreemde sleutels geïgnoreer word.
——MySQL-verwysingshandleiding, Hoofstuk 14.6.6 Beperkings op vreemde sleutels
Hierdie stelling sê duidelik vir ons dat vreemde sleutels heeltemal ongeldig is in MyISAM.
en MariaDB Amptelike Dokumentasie Daar is ook beklemtoon dat:
"MyISAM ondersteun nie transaksies nie. Toepassings wat staatmaak op transaksionele integriteit moet nie MyISAM gebruik nie."
——MariaDB Kennisbasis, Stoorenjins
Daarom moet jy twee keer dink voordat jy 'n oorskakeling maak.
My Standpunt en Gevolgtrekking
Om InnoDB na MyISAM om te skakel is soos om die enjin van 'n luukse motor met 'n vragmotor se enjin te vervang.
Dit kan loop, maar dit loop op 'n heeltemal ander manier.
As jou besigheid liggewig statistiese navrae behels, kan MyISAM se spoed en eenvoud meer geskik wees.
As jou stelsel egter op transaksies en vreemde sleutels staatmaak, is die haastig omskakeling daarvan soos om die lugsak te verwyder.
Daarom lê ware wysheid nie daarin om spoed blindelings na te jaag nie, maar om stabiliteit en prestasie te balanseer.
Die keuse van databasis bepaal die siel van die stelsel.
Die bemeestering van die vaardighede om stoorenjins te skakel, is nie net 'n demonstrasie van tegniese vermoë nie, maar ook 'n verheffing van argitektoniese denke.
As u grootmaat-omskakeling oorweeg, doen asseblief eers 'n omvattende risikobepaling.
Voer die toetsomgewing een keer uit om werklike besigheidscenario's te simuleer.
Nadat u bevestig het dat alles korrek is, voer dit in die produksiemgewing uit.
Databasisse is nie speelgoed nie; hulle is die hart van ondernemingsdata.
En jy is die een wat die ritme van jou hart beheer.
Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ Die artikel "Hoe om InnoDB-tabelle in bondels na MyISAM-tabelle in MySQL/MariaDB-databasisse om te skakel?" wat hier gedeel word, kan dalk vir jou nuttig wees.
Welkom om die skakel van hierdie artikel te deel:https://www.chenweiliang.com/cwl-34157.html
