Hoe om MySQL/MariaDB databasisse te konfigureer om InnoDB tabelle na MyISAM tabelle te bondelomskakel?

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

Hoe om MySQL/MariaDB databasisse te konfigureer om InnoDB tabelle na MyISAM tabelle te bondelomskakel?

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

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

  1. Rugsteundata Maak seker dat jy uitvoer voordat jy omskakel. .sql Lêers word gestoor om te verseker dat hulle te eniger tyd herstel kan word.

  2. Kontrolelysstruktuur Gebruik die volgende opdrag om te kyk of 'n vreemde sleutel bestaan:

    SHOW CREATE TABLE `你的表名`;
    
  3. Voer omskakeling uit 使用 ALTER TABLE Alternatiewelik kan bondelskripte gebruik word om die omskakeling te voltooi.

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

发表 评论

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde word gebruik * Etiket

Artikelgids
Scroll na bo