Imenik članaka
Mehanizam za pohranu tablice baze podataka je poput motora automobila; promjena motora odmah mijenja performanse i karakteristike. Mnogi ljudi misle da je baza podataka samo za pohranu podataka, ali kada zapravo počnete raditi na njoj... InnoDB 转成 MojISAMTek tada ćete otkriti skrivene tajne koje stoje iza toga.
Zašto bi netko želio prijeći s InnoDB-a na MyISAM?
U mnogim scenarijima, MyISAM je brži, posebno za aplikacije koje zahtijevaju puno čitanja i malo pisanja, kao što su baze podataka za zapisnike i statistike.
Njegov mehanizam zaključavanja na razini tablice zapravo radi vrlo glatko pod niskom konkurentnošću.
Štoviše, pohrana datoteka u MyISAM-u je intuitivnija; jedna .MYD Pohrani podatke, jedan .MYI Pohranjivanje indeksa, migracija i izrada sigurnosnih kopija vrlo su praktični.
Međutim, InnoDB-ova podrška za transakcije i strane ključeve gotovo je nužna u složenim poslovnim scenarijima.
Stoga morate utvrditi trebaju li vašem poslovanju te značajke prije nego što napravite prijelaz.
Osnovna naredba: ALTER TABLE
Za pretvorbu jedne tablice iz InnoDB-a u MyISAM, potrebna vam je samo jedna linija koda:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Nakon što je izvršavanje završeno, mehanizam za pohranu tablice će se prebaciti.
Nije li to jednostavno?
Grupna konverzija: Automatsko generiranje skripti
Ako imate desetke ili čak stotine tablica, njihovo ručno mijenjanje definitivno nije praktično.
U ovom trenutku, jedan upit se može koristiti za automatsko generiranje naredbi za skupnu pretvorbu:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Nakon pokretanja, ispisat će hrpu... ALTER TABLE ... Izjava.
Kopirajte ove naredbe i izvršite ih sve odjednom kako biste dovršili serijsku pretvorbu odjednom.
To je ono što se naziva "automatizirana skupna pretvorba".
Procjena rizika prije konverzije

Ograničenja vanjskog ključa
InnoDB podržava strane ključeve, dok MyISAM ih uopće ne podržava.
Nakon pretvorbe, ograničenja stranog ključa bit će izravno odbačena.
Ako se vaše poslovanje oslanja na kaskadno brisanje ili ažuriranje, logika će potpuno zakazati nakon konverzije.
Podrška za transakcije
InnoDB ima transakcije i podržava ih. COMMIT 和 ROLLBACK.
MyISAM nema transakcije, samo zaključavanja na razini tablice.
Nakon konverzije, sav kod vezan uz transakcije postat će nevažeći, a vraćanje na prethodno stanje bit će nemoguće u slučaju iznimke.
Izvedba istodobnosti
InnoDB koristi zaključavanje na razini redaka, dok MyISAM koristi zaključavanje na razini tablice.
U scenarijima s visokom konkurentnošću, MyISAM često zaključava tablice, što dovodi do uskih grla u performansama.
Značajke indeksa
在 MySQL Prije verzije 5.6, MyISAM je imao vlastiti indeks punog teksta.
Ali u MySQL Indeksiranje punog teksta već je podržano u verzijama 5.6 i 10+ baza MariaDB i InnoDB.
Stoga, osim ako ne koristite stariju verziju, nema potrebe za prelaskom na MyISAM za indeksiranje cijelog teksta.
Postupak najbolje prakse
Sigurnosna kopija podataka Prije pretvorbe, obavezno izvezite.
.sqlDatoteke se pohranjuju kako bi se osiguralo da se mogu vratiti u bilo kojem trenutku.Struktura kontrolne liste Koristite sljedeću naredbu za provjeru postoji li strani ključ:
SHOW CREATE TABLE `你的表名`;Izvršite konverziju 使用
ALTER TABLEAlternativno, za dovršetak pretvorbe mogu se koristiti batch skripte.Provjerite zdravstveno stanje Nakon što je konverzija završena, pokrenite:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;To potvrđuje da tablica ispravno funkcionira i oslobađa fragmente.
Metoda obrnutog oporavka
Ako se nakon konverzije primijeti smanjenje performansi ili problemi s poslovnom logikom, možete se u bilo kojem trenutku vratiti na InnoDB:
ALTER TABLE `你的表名` ENGINE = InnoDB;
To se naziva "reverzibilna operacija", koja vam daje izlaz.
Navedeni autoritativni stavovi
Prema Službena dokumentacija MySQL-a Obrazloženje:
"Konstrukcija stranog ključa"aint-ove podržava samo InnoDB. Ako pretvorite tablicu u MyISAM, svi strani ključevi bit će zanemareni.
——MySQL referentni priručnik, Poglavlje 14.6.6 Ograničenja vanjskog ključa
Ova izjava nam jasno govori da su strani ključevi potpuno nevažeći u MyISAM-u.
i Službena dokumentacija MariaDB-a Također je naglašeno da:
"MyISAM ne podržava transakcije. Aplikacije koje se oslanjaju na integritet transakcija ne bi smjele koristiti MyISAM."
——Baza znanja MariaDB, Mehanizmi za pohranu
Zato morate dvaput razmisliti prije nego što napravite promjenu.
Moje gledište i zaključak
Pretvaranje InnoDB-a u MyISAM je kao zamjena motora luksuznog automobila motorom kamiona.
Može se pokrenuti, ali se pokrene na potpuno drugačiji način.
Ako vaše poslovanje uključuje lagane statističke upite, brzina i jednostavnost MyISAM-a mogu biti prikladnije.
Međutim, ako se vaš sustav oslanja na transakcije i strane ključeve, njihovo brzopleto pretvaranje je kao uklanjanje zračnog jastuka.
Stoga, prava mudrost ne leži u slijepom traženju brzine, već u uravnoteženju stabilnosti i performansi.
Izbor baze podataka određuje dušu sustava.
Savladavanje vještina prebacivanja sustava za pohranu podataka nije samo demonstracija tehničke sposobnosti, već i uzdizanje arhitektonskog razmišljanja.
Ako razmišljate o masovnoj konverziji, prvo provedite sveobuhvatnu procjenu rizika.
Pokrenite testno okruženje jednom kako biste simulirali stvarne poslovne scenarije.
Nakon što potvrdite da je sve ispravno, izvršite naredbu u produkcijskom okruženju.
Baze podataka nisu igračke; one su srž poslovnih podataka.
I ti si taj/ta koja kontrolira ritam svog srca.
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ Članak "Kako skupno pretvoriti InnoDB tablice u MyISAM tablice u MySQL/MariaDB bazama podataka?" podijeljen ovdje mogao bi vam biti koristan.
Dobrodošli da podijelite vezu ovog članka:https://www.chenweiliang.com/cwl-34157.html
