Kako konfigurirati MySQL/MariaDB baze podataka za grupno konvertiranje InnoDB tabela u MyISAM tabele?

Mehanizam za pohranu podataka u tabeli 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 转成 MyISAMTek tada ćete otkriti skrivene tajne koje se kriju iza toga.

Zašto bi neko želio preći sa InnoDB-a na MyISAM?

U mnogim scenarijima, MyISAM je brži, posebno za aplikacije koje zahtijevaju puno čitanja i manje pisanja, kao što su baze podataka za logove i statistiku.

Njegov mehanizam zaključavanja na nivou tabele zapravo radi vrlo glatko pod niskom konkurentnošću.

Štaviše, MyISAM-ovo skladištenje datoteka je intuitivnije; .MYD Pohranite podatke, jedan .MYI Pohranjivanje indeksa, migracija i pravljenje sigurnosnih kopija su vrlo praktični.

Međutim, InnoDB-ova podrška za transakcije i strane ključeve je gotovo neophodna u složenim poslovnim scenarijima.

Stoga, prije nego što izvršite prelazak, morate utvrditi da li su vašem poslovanju zaista potrebne ove funkcije.

Osnovna naredba: ALTER TABLE

Da biste konvertovali jednu tabelu 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 u tabeli će se preklopiti.

Nije li to jednostavno?

Grupna konverzija: Automatsko generiranje skripti

Ako imate desetine ili čak stotine tabela, njihovo ručno mijenjanje definitivno nije praktično.

U ovom trenutku, jedan upit se može koristiti za automatsko generiranje naredbi za grupnu konverziju:

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

Nakon pokretanja, ispisat će gomilu... ALTER TABLE ... Izjava.

Kopirajte ove naredbe i izvršite ih sve odjednom kako biste dovršili grupnu konverziju odjednom.

Ovo je ono što se naziva "automatizirana grupna konverzija".

Procjena rizika prije konverzije

Kako konfigurirati MySQL/MariaDB baze podataka za grupno konvertiranje InnoDB tabela u MyISAM tabele?

Ograničenja vanjskog ključa

InnoDB podržava strane ključeve, dok MyISAM ih uopće ne podržava.

Nakon konverzije, ograničenja stranog ključa će biti direktno odbačena.

Ako se vaše poslovanje oslanja na kaskadno brisanje ili ažuriranje, logika će potpuno otkazati nakon konverzije.

Podrška za transakcije

InnoDB ima transakcije i podržava ih. COMMITROLLBACK.

MyISAM nema transakcije, samo zaključavanja na nivou tabele.

Nakon konverzije, sav kod vezan za transakcije postat će nevažeći, a vraćanje na prethodnu verziju bit će nemoguće u slučaju izuzetka.

Konkurentne performanse

InnoDB koristi zaključavanje na nivou redova, dok MyISAM koristi zaključavanje na nivou tabele.

U scenarijima s visokom konkurentnošću, MyISAM često zaključava tabele, što dovodi do uskih grla u performansama.

Karakteristike indeksa

MySQL Prije verzije 5.6, MyISAM je imao vlastiti indeks punog teksta.

Ali u MySQL Indeksiranje punog teksta je već podržano u verzijama 5.6 i 10+ platformi MariaDB i InnoDB.

Stoga, osim ako ne koristite stariju verziju, nema potrebe za prelaskom na MyISAM za indeksiranje cijelog teksta.

Proces najbolje prakse

  1. Sigurnosna kopija podataka Prije konverzije, obavezno izvršite izvoz. .sql Datoteke se pohranjuju kako bi se osiguralo da se mogu vratiti u bilo kojem trenutku.

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

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

  4. Provjerite zdravstveno stanje Nakon što je konverzija završena, pokrenite:

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

    Ovo potvrđuje da tabela ispravno funkcioniše i oslobađa fragmente.

Metoda obrnutog oporavka

Ako se nakon konverzije primijeti smanjenje performansi ili problemi s poslovnom logikom, možete se vratiti na InnoDB u bilo kojem trenutku:

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

Ovo se zove "reverzibilna operacija", koja vam daje izlaz.

Citirana autoritativna gledišta

Prema Zvanična dokumentacija MySQL-a Objašnjenje:

"Konstrukcija vanjskog ključa"aint-ove podržava samo InnoDB. Ako konvertujete tabelu u MyISAM, svi strani ključevi će biti ignorisani.
——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 Zvanična dokumentacija MariaDB-a Također je naglašeno da:

"MyISAM ne podržava transakcije. Aplikacije koje se oslanjaju na integritet transakcija ne bi trebale koristiti MyISAM."
——Baza znanja MariaDB, Mehanizmi za pohranu podataka

Zato je potrebno dvaput razmisliti prije nego što napravite promjenu.

Moje gledište i zaključak

Konvertovanje InnoDB-a u MyISAM je kao zamjena motora luksuznog automobila motorom kamiona.

Može da se pokrene, ali funkcioniše 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š sistem oslanja na transakcije i strane ključeve, njihovo brzopleto konvertovanje je kao skidanje zračnog jastuka.

Stoga, prava mudrost ne leži u slijepom traženju brzine, već u balansiranju stabilnosti i performansi.

Izbor baze podataka određuje dušu sistema.

Savladavanje vještina prebacivanja sistema za pohranu podataka nije samo demonstracija tehničke sposobnosti, već i podizanje nivoa 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 kontroliše ritam svog srca.

Komentari

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

Article Directory
Dođite na vrh