Jak skonfigurować bazy danych MySQL/MariaDB w celu wsadowej konwersji tabel InnoDB do tabel MyISAM?

Silnik bazy danych tabeli bazy danych jest jak silnik samochodu; wymiana silnika natychmiast zmienia wydajność i charakterystykę. Wiele osób uważa, że ​​baza danych służy wyłącznie do przechowywania danych, ale kiedy spróbujesz przekonwertować InnoDB na MyISAM , odkryjesz ukryte zawiłości.

Dlaczego ktoś miałby chcieć przejść z InnoDB na MyISAM?

W wielu scenariuszach MyISAM jest szybszy, zwłaszcza w przypadku aplikacji wymagających dużej ilości odczytu i małej ilości zapisu, takich jak bazy danych dzienników i statystyk.

Mechanizm blokowania na poziomie tabeli działa bardzo płynnie przy niskim poziomie współbieżności.

Co więcej, przechowywanie plików w MyISAM jest bardziej intuicyjne; .MYD Przechowuj dane, jeden .MYI Przechowywanie indeksów, migrowanie i tworzenie kopii zapasowych są bardzo wygodne.

Jednak obsługa transakcji i kluczy obcych w InnoDB jest niemal koniecznością w złożonych scenariuszach biznesowych.

Dlatego przed dokonaniem przejścia musisz ustalić, czy Twoja firma faktycznie potrzebuje tych funkcji.

Polecenie główne: ALTER TABLE

Aby przekonwertować pojedynczą tabelę z InnoDB do MyISAM, potrzebujesz tylko jednej linijki kodu:

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

Po zakończeniu wykonywania polecenie zostanie przełączone w celu przechowywania tabeli.

Czy to nie jest proste?

Konwersja wsadowa: automatyczne generowanie skryptów

Jeśli masz dziesiątki, a nawet setki tabel, ręczna modyfikacja ich zdecydowanie nie jest praktyczna.

W tym momencie można użyć pojedynczego zapytania, aby automatycznie wygenerować polecenia konwersji wsadowej:

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

Po uruchomieniu wyświetli szereg... ALTER TABLE ... Oświadczenie.

Skopiuj te polecenia i wykonaj je wszystkie naraz, aby ukończyć konwersję wsadową za jednym razem.

Zjawisko to nazywa się „automatyczną konwersją wsadową”.

Ocena ryzyka przed konwersją

Jak skonfigurować bazy danych MySQL/MariaDB w celu wsadowej konwersji tabel InnoDB do tabel MyISAM?

Ograniczenia klucza obcego

InnoDB obsługuje klucze obce, natomiast MyISAM nie obsługuje ich wcale.

Po konwersji ograniczenia klucza obcego zostaną bezpośrednio odrzucone.

Jeśli w Twojej firmie stosuje się kaskadowe usuwanie lub aktualizowanie, po konwersji cała logika całkowicie zawiedzie.

Wsparcie transakcji

InnoDB zawiera transakcje i je obsługuje. COMMIT I ROLLBACK.

MyISAM nie zawiera transakcji, jedynie blokady na poziomie tabeli.

Po konwersji cały kod związany z transakcją stanie się nieważny, a w przypadku wystąpienia wyjątku wycofanie go będzie niemożliwe.

Wydajność współbieżności

InnoDB korzysta z blokowania na poziomie wiersza, natomiast MyISAM korzysta z blokowania na poziomie tabeli.

W scenariuszach o wysokiej współbieżności MyISAM często blokuje tabele, co prowadzi do wąskich gardeł wydajnościowych.

Funkcje indeksu

Przed wersją MySQL 5.6 baza danych MyISAM miała unikalny indeks pełnotekstowy.

Jednakże w MySQL 5.6+ i MariaDB 10+ InnoDB obsługuje już indeksowanie pełnotekstowe.

Dlatego też, o ile nie używasz starszej wersji, nie ma potrzeby przełączania się na MyISAM w celu indeksowania pełnotekstowego.

Proces najlepszych praktyk

  1. Kopia zapasowa danych Przed konwersją należy pamiętać o wyeksportowaniu. .sql Pliki są przechowywane w sposób umożliwiający ich przywrócenie w dowolnym momencie.

  2. Sprawdź strukturę tabeli za pomocą następującego polecenia, aby zobaczyć, czy występują w niej klucze obce:

    SHOW CREATE TABLE `你的表名`;
    
  3. Wykonaj konwersję 使用 ALTER TABLE Alternatywnie, do dokończenia konwersji można użyć skryptów wsadowych.

  4. Sprawdź stan zdrowia . Po konwersji uruchom:

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

    Potwierdza to, że tabela działa prawidłowo i uwalnia fragmenty.

Metoda odzyskiwania odwrotnego

Jeśli po konwersji zauważysz spadek wydajności lub problemy z logiką biznesową, możesz w dowolnym momencie powrócić do InnoDB:

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

To jest to, co nazywamy „operacją odwracalną” i co daje ci wyjście.

Przytoczone autorytatywne punkty widzenia

Zgodnie z oficjalną dokumentacją MySQL :

„Konstrukcja klucza obcego”aints są obsługiwane tylko przez InnoDB. Jeśli przekonwertujesz tabelę na MyISAM, wszystkie klucze obce zostaną zignorowane.
——Podręcznik MySQL, rozdział 14.6.6 Ograniczenia klucza obcego

To oświadczenie wyraźnie mówi nam, że klucze obce są całkowicie nieprawidłowe w systemie MyISAM.

Oficjalna dokumentacja MariaDB podkreśla również:

„MyISAM nie obsługuje transakcji. Aplikacje wymagające integralności transakcji nie powinny używać MyISAM.”
——Baza wiedzy MariaDB, Silniki pamięci masowej

Dlatego musisz się dwa razy zastanowić zanim podejmiesz decyzję o zmianie.

Mój punkt widzenia i wnioski

Konwersja InnoDB do MyISAM przypomina wymianę silnika luksusowego samochodu na silnik ciężarówki.

Może działać, ale działa w zupełnie inny sposób.

Jeśli w Twojej firmie stosuje się proste zapytania statystyczne, szybkość i prostota rozwiązania MyISAM może okazać się bardziej odpowiednia.

Jeśli jednak Twój system opiera się na transakcjach i kluczach obcych, pochopna ich konwersja przypomina usunięcie poduszki powietrznej.

Dlatego prawdziwa mądrość nie leży w ślepym dążeniu do szybkości, ale w znalezieniu równowagi między stabilnością i wydajnością.

Wybór bazy danych decyduje o istocie systemu.

Opanowanie umiejętności przełączania silników pamięci masowej to nie tylko dowód kompetencji technicznych, ale także rozwinięcie myślenia architektonicznego.

Jeśli rozważasz przejście na produkcję masową, przeprowadź najpierw kompleksową ocenę ryzyka.

Uruchom środowisko testowe jeden raz, aby symulować rzeczywiste scenariusze biznesowe.

Po potwierdzeniu, że wszystko jest poprawne, wykonaj polecenie w środowisku produkcyjnym.

Bazy danych nie są zabawką. Stanowią serce danych przedsiębiorstwa.

A ty jesteś tym, który kontroluje rytm swojego serca.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Przewiń do góry