Kako konfigurirati MySQL/MariaDB baze podataka za grupnu pretvorbu InnoDB tablica u MyISAM tablice?

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

Kako konfigurirati MySQL/MariaDB baze podataka za grupnu pretvorbu InnoDB tablica u MyISAM tablice?

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

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

  1. Sigurnosna kopija podataka Prije pretvorbe, obavezno izvezite. .sql Datoteke se pohranjuju kako bi se osiguralo da se mogu vratiti u bilo kojem trenutku.

  2. Struktura kontrolne liste Koristite sljedeću naredbu za provjeru postoji li strani ključ:

    SHOW CREATE TABLE `你的表名`;
    
  3. Izvršite konverziju 使用 ALTER TABLE Alternativno, za dovršetak pretvorbe mogu se koristiti batch skripte.

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

发表 评论

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Označiti

Imenik članaka
Dođite na vrh