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

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ä. COMMIT 和 ROLLBACK.
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
Varmuuskopiotiedot Ennen muuntamista muista viedä tiedosto.
.sqlTiedostot tallennetaan niin, että ne voidaan palauttaa milloin tahansa.Tarkistuslistan rakenne Tarkista seuraavalla komennolla, onko viiteavainta olemassa:
SHOW CREATE TABLE `你的表名`;Suorita muunnos 使用
ALTER TABLEVaihtoehtoisesti muunnos voidaan suorittaa eräajokomentosarjoilla.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
