Miten MySQL/MariaDB-tietokannat konfiguroidaan muuttamaan InnoDB-taulukoita eräajoina MyISAM-taulukoiksi?

Tietokantataulukon tallennusmoottori on kuin auton moottori; moottorin vaihtaminen muuttaa välittömästi suorituskykyä ja ominaisuuksia. Monet ihmiset luulevat, että tietokanta on vain tiedon tallentamista varten, mutta kun todella alat työskennellä sen parissa... InnoDB Muunna muotoon MyISAMVasta sitten löydät sen takana piilevät salaisuudet.

Miksi joku haluaisi vaihtaa InnoDB:stä MyISAMiin?

Monissa tilanteissa MyISAM on nopeampi, erityisesti luku- ja kirjoituspainotteisissa sovelluksissa, kuten loki- ja tilastotietokannoissa.

Sen pöytätason lukitusmekanismi toimii itse asiassa erittäin sujuvasti myös alhaisilla samanaikaisuusmäärillä.

Lisäksi MyISAMin tiedostojen tallennus on intuitiivisempaa; yksi .MYD Tallenna tiedot, yksi .MYI Indeksien tallentaminen, migrointi ja varmuuskopiointi ovat kaikki erittäin käteviä.

InnoDB:n transaktio- ja viiteavainten tuki on kuitenkin lähes välttämättömyys monimutkaisissa liiketoimintatilanteissa.

Siksi sinun on selvitettävä, tarvitseeko yrityksesi näitä ominaisuuksia todella ennen siirtymistä.

Ydinkomento: ALTER TABLE

Yhden InnoDB-taulukon muuntamiseen MyISAM-muotoon tarvitaan vain yksi koodirivi:

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

Suorituksen päätyttyä taulukon tallennusmoottori vaihdetaan.

Eikö se ole suoraviivaista?

Erämuunnos: Automaattinen komentosarjojen luonti

Jos sinulla on kymmeniä tai jopa satoja taulukoita, niiden manuaalinen muokkaaminen ei todellakaan ole käytännöllistä.

Tässä vaiheessa yhtä kyselyä voidaan käyttää erämuunnoslausekkeiden automaattiseen luomiseen:

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

Suorittamisen jälkeen se tuottaa joukon... ALTER TABLE ... Lausunto.

Kopioi nämä lauseet ja suorita ne kaikki kerralla, jotta erämuunnos suoritetaan kerralla.

Tätä kutsutaan "automaattiseksi erämuunnokseksi".

Riskienarviointi ennen muuntamista

Miten MySQL/MariaDB-tietokannat konfiguroidaan muuttamaan InnoDB-taulukoita eräajoina MyISAM-taulukoiksi?

Viiteavaimen rajoitukset

InnoDB tukee viiteavaimia, kun taas MyISAM ei tue niitä lainkaan.

Kun muunnos on valmis, viiteavaimen rajoitteet hylätään.

Jos yrityksesi perustuu sarjapoistoihin tai -päivityksiin, logiikka epäonnistuu täysin muunnoksen jälkeen.

Transaktiotuki

InnoDB:llä on transaktioita ja se tukee niitä. COMMITROLLBACK.

MyISAMissa ei ole tapahtumia, ainoastaan ​​taulukkotason lukituksia.

Muunnoksen jälkeen kaikki tapahtumaan liittyvä koodi muuttuu virheelliseksi, eikä palautus ole mahdollista poikkeuksen sattuessa.

Samanaikaisuussuorituskyky

InnoDB käyttää rivitason lukitusta, kun taas MyISAM käyttää taulukkotason lukitusta.

Korkean samanaikaisuuden tilanteissa MyISAM lukitsee usein taulukot, mikä johtaa suorituskyvyn pullonkauloihin.

Indeksiominaisuudet

MySQL Ennen versiota 5.6 MyISAMilla oli oma kokotekstihakemistonsa.

Mutta MySQL Kokotekstisten indeksointia tuetaan jo MariaDB:n ja InnoDB:n versioissa 5.6 ja 10+.

Siksi, ellet käytä vanhempaa versiota, sinun ei tarvitse vaihtaa MyISAM-järjestelmään kokotekstin indeksointia varten.

Parhaiden käytäntöjen prosessi

  1. Varmuuskopiotiedot Ennen muuntamista muista viedä tiedosto. .sql Tiedostot tallennetaan niin, että ne voidaan palauttaa milloin tahansa.

  2. Tarkistuslistan rakenne Tarkista seuraavalla komennolla, onko viiteavainta olemassa:

    SHOW CREATE TABLE `你的表名`;
    
  3. Suorita muunnos 使用 ALTER TABLE Vaihtoehtoisesti muunnos voidaan suorittaa eräajokomentosarjoilla.

  4. Tarkista terveydentila Kun muunnos on valmis, suorita:

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

    Tämä vahvistaa, että taulukko toimii oikein ja vapauttaa fragmentit.

Käänteinen palautusmenetelmä

Jos muunnoksen jälkeen havaitaan suorituskyvyn heikkenemistä tai liiketoimintalogiikkaongelmia, voit vaihtaa takaisin InnoDB:hen milloin tahansa:

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

Tätä kutsutaan "palautettavaksi operaatioksi", joka antaa sinulle ulospääsytien.

Viitatut arvovaltaiset näkökulmat

Mukaan MySQL:n virallinen dokumentaatio Selitys:

"Viiteavaimen määritys"aiVain InnoDB tukee nt-tiedostoja. Jos muunnat taulukon MyISAM-muotoon, kaikki viiteavaimet ohitetaan.
——MySQL-referenssikäsikirja, luku 14.6.6 Viiteavaimen rajoitteet

Tämä lauseke kertoo selvästi, että viiteavaimet ovat täysin virheellisiä MyISAMissa.

ja MariaDB:n virallinen dokumentaatio Myös korostettiin, että:

"MyISAM ei tue transaktioita. Transaktioiden eheyteen luottavien sovellusten ei tule käyttää MyISAM:ia."
——MariaDB-tietokanta, tallennusmoottorit

Siksi kannattaa miettiä kahdesti ennen vaihtoa.

Näkökulmani ja johtopäätökseni

InnoDB:n muuntaminen MyISAMiksi on kuin luksusauton moottorin vaihtaminen kuorma-auton moottoriin.

Se voi juosta, mutta se juoksee täysin eri tavalla.

Jos yrityksesi käsittelee kevyitä tilastollisia kyselyitä, MyISAMin nopeus ja yksinkertaisuus saattavat sopia paremmin.

Jos järjestelmäsi kuitenkin perustuu tapahtumiin ja viiteavaimiin, niiden hätäinen muuntaminen on kuin turvatyynyn poistaminen.

Todellinen viisaus ei siis ole sokeassa nopeuden tavoittelussa, vaan vakauden ja suorituskyvyn tasapainottamisessa.

Tietokannan valinta määrittää järjestelmän sielun.

Tallennusmoottoreiden vaihtamisen taitojen hallitseminen ei ole vain osoitus teknisestä kyvykkyydestä, vaan myös arkkitehtonisen ajattelun kohokohta.

Jos harkitset massamuuntoa, tee ensin kattava riskinarviointi.

Suorita testiympäristö kerran simuloidaksesi todellisia liiketoimintaskenaarioita.

Kun olet varmistanut, että kaikki on oikein, suorita se tuotantoympäristössä.

Tietokannat eivät ole leluja; ne ovat yritysdatan ydin.

Ja sinä olet se, joka hallitsee sydämesi rytmiä.

Hope Chen Weiliang -blogi ( https://www.chenweiliang.com/ Tässä jaettu artikkeli "Kuinka muuntaa InnoDB-taulukoita MyISAM-taulukoiksi eräajoissa MySQL/MariaDB-tietokannoissa?" voi olla sinulle hyödyllinen.

Tervetuloa jakamaan tämän artikkelin linkki:https://www.chenweiliang.com/cwl-34157.html

Avataksesi lisää piilotettuja temppuja🔑, tervetuloa liittymään Telegram-kanavallemme!

Jaa ja tykkää jos pidät! Jakamasi ja tykkäyksesi ovat jatkuva motivaatiomme!

 

发表 评论

Sähköpostiosoitettasi ei julkaista. 必填 项 已 用 * 标注

Artikkelihakemisto
Siirry alkuun