Kuidas seadistada MySQL/MariaDB andmebaase InnoDB tabelite partiipõhiseks teisendamiseks MyISAM tabeliteks?

Andmebaasi tabeli salvestusmootor on nagu auto mootor; mootori vahetamine muudab koheselt jõudlust ja omadusi. Paljud inimesed arvavad, et andmebaas on ainult andmete salvestamiseks, aga kui selle kallal tegelikult tööle hakata... InnoDB 转成 MinuISAMAlles siis avastad selle taga peituvad saladused.

Miks peaks keegi tahtma InnoDB-lt MyISAM-ile üle minna?

Paljudes stsenaariumides on MyISAM kiirem, eriti lugemis- ja kirjutamismahukate rakenduste, näiteks logi- ja statistikaandmebaaside puhul.

Selle laua tasemel lukustusmehhanism töötab tegelikult väga sujuvalt ka madala samaaegsuse korral.

Lisaks on MyISAMi failisalvestus intuitiivsem; üks .MYD Salvesta andmed, üks .MYI Indeksite salvestamine, migreerimine ja varundamine on kõik väga mugavad.

InnoDB tehingute ja võõrvõtmete tugi on aga keerukates ärisituatsioonides peaaegu hädavajalik.

Seetõttu peate enne üleminekut välja selgitama, kas teie ettevõte neid funktsioone tegelikult vajab.

Põhikäsk: ALTER TABLE

Ühe tabeli teisendamiseks InnoDB-st MyISAM-iks on vaja ainult ühte koodirida:

ALTER TABLE `你的表名` ENGINE = MyISAM;

Pärast täitmise lõpetamist lülitatakse tabeli salvestusmootor ümber.

Kas pole see otsekohene?

Pakkkonverteerimine: automaatne skriptide genereerimine

Kui teil on kümneid või isegi sadu tabeleid, pole nende käsitsi muutmine kindlasti otstarbekas.

Sel hetkel saab partii teisendamise avaldusi automaatselt genereerida ühe päringuga:

SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;') 
FROM information_schema.tables 
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';

Pärast käivitamist väljastab see hulga... ALTER TABLE ... Avaldus.

Kopeeri need laused ja käivita need kõik korraga, et partii teisendamine ühe korraga lõpule viia.

Seda nimetatakse "automatiseeritud partii teisendamiseks".

Riskianalüüs enne ümberehitust

Kuidas seadistada MySQL/MariaDB andmebaase InnoDB tabelite partiipõhiseks teisendamiseks MyISAM tabeliteks?

Välisvõtme piirangud

InnoDB toetab võõrvõtmeid, samas kui MyISAM ei toeta neid üldse.

Pärast teisendamist eemaldatakse võõrvõtme piirangud otse.

Kui teie ettevõte tugineb kaskaadsele kustutamisele või värskendusele, siis loogika pärast konversiooni täielikult ebaõnnestub.

Tehingute tugi

InnoDB-l on tehingud ja see toetab neid. COMMITROLLBACK.

MyISAMil pole tehinguid, ainult tabeli tasemel lukud.

Pärast konverteerimist muutub kogu tehinguga seotud kood kehtetuks ja erandi korral pole tagasipööramine võimalik.

Samaaegsuse jõudlus

InnoDB kasutab rea tasemel lukustamist, MyISAM aga tabeli tasemel lukustamist.

Suure samaaegsuse korral lukustab MyISAM sageli tabeleid, mis põhjustab jõudluse kitsaskohti.

Indeksi funktsioonid

MySQL Enne versiooni 5.6 oli MyISAMil oma täisteksti register.

Aga MySQL Täisteksti indekseerimist toetatakse juba MariaDB ja InnoDB versioonides 5.6 ja 10+.

Seega, kui te ei kasuta vanemat versiooni, pole vaja täisteksti indekseerimiseks MyISAM-ile üle minna.

Parima tava protsess

  1. Varundusandmed Enne teisendamist eksportige kindlasti. .sql Faile salvestatakse nii, et neid saaks igal ajal taastada.

  2. Kontrollnimekirja struktuur Välisvõtme olemasolu kontrollimiseks kasutage järgmist käsku:

    SHOW CREATE TABLE `你的表名`;
    
  3. Tehke konversioon Kasutage ALTER TABLE Teise võimalusena saab konverteerimise lõpuleviimiseks kasutada partiiskripte.

  4. Kontrollige tervislikku seisundit Pärast konversiooni lõppu käivitage:

    CHECK TABLE `你的表名`;
    OPTIMIZE TABLE `你的表名`;
    

    See kinnitab tabeli korrektset toimimist ja vabastab fragmendid.

Pöördtaastumismeetod

Kui pärast konverteerimist ilmneb jõudluse langus või äriloogika probleemid, saate igal ajal tagasi InnoDB-le lülituda:

ALTER TABLE `你的表名` ENGINE = InnoDB;

Seda nimetatakse "pöörduvaks operatsiooniks", mis annab sulle väljapääsu.

Viidatud autoriteetsed seisukohad

Vastavalt MySQL-i ametlik dokumentatsioon Selgitus:

"Võõrvõtme konstruktsioon"aint-e toetab ainult InnoDB. Kui teisendate tabeli MyISAM-iks, ignoreeritakse kõiki võõrvõtmeid.
——MySQL-i teatmik, peatükk 14.6.6 Võõrvõtme piirangud

See väide ütleb meile selgelt, et võõrvõtmed on MyISAM-is täiesti kehtetud.

ja MariaDB ametlik dokumentatsioon Samuti rõhutati, et:

"MyISAM ei toeta tehinguid. Tehingute terviklikkusel põhinevad rakendused ei tohiks MyISAM-i kasutada."
——MariaDB teadmistebaas, salvestusmootorid

Sellepärast tuleb enne vahetust kaks korda järele mõelda.

Minu seisukoht ja järeldus

InnoDB MyISAM-iks teisendamine on nagu luksusauto mootori asendamine veoauto mootoriga.

See võib küll joosta, aga see jookseb hoopis teistmoodi.

Kui teie ettevõte hõlmab kergeid statistilisi päringuid, võib MyISAMi kiirus ja lihtsus olla sobivam.

Kui teie süsteem aga tugineb tehingutele ja võõrvõtmetele, on nende kiirustamata teisendamine nagu turvapadja eemaldamine.

Seega ei peitu tõeline tarkus pimesi kiiruse tagaajamises, vaid stabiilsuse ja jõudluse tasakaalustamises.

Andmebaasi valik määrab süsteemi hinge.

Salvestusmootorite vahetamise oskuste omandamine ei ole ainult tehniliste võimete demonstreerimine, vaid ka arhitektuurilise mõtlemise edasiarendamine.

Kui kaalute hulgi konverteerimist, tehke kõigepealt põhjalik riskihindamine.

Käivitage testkeskkond üks kord, et simuleerida reaalseid äristsenaariume.

Pärast seda, kui olete veendunud, et kõik on õige, käivitage käsk tootmiskeskkonnas.

Andmebaasid ei ole mänguasjad; need on ettevõtte andmete süda.

Ja sina oled see, kes kontrollib oma südame rütmi.

发表 评论

您的邮箱地址不会被公开. Kasutatakse kohustuslikke välju * Silt

Artiklite kataloog
Leidke Top