Како да се конфигурираат базите на податоци MySQL/MariaDB за групно конвертирање на табелите на InnoDB во табели на MyISAM?

Моторот за складирање на табела со база на податоци е како моторот на автомобил; менувањето на моторот веднаш ги менува перформансите и карактеристиките. Многу луѓе мислат дека базата на податоци е само за складирање податоци, но кога всушност ќе почнете да работите на неа... InnoDB 转成 MyISAMСамо тогаш ќе ги откриете скриените тајни зад тоа.

Зошто некој би сакал да се префрли од InnoDB на MyISAM?

Во многу сценарија, MyISAM е побрз, особено за апликации што бараат многу читање и малку пишување, како што се базите на податоци за логови и статистика.

Неговиот механизам за заклучување на ниво на маса всушност работи многу непречено при ниска истовременост.

Покрај тоа, складирањето на датотеки на MyISAM е поинтуитивно; еден .MYD Складирајте податоци, еден .MYI Складирањето индекси, мигрирањето и правењето резервни копии се многу практични.

Сепак, поддршката за трансакции и странски клучеви на InnoDB е речиси неопходна во сложени деловни сценарија.

Затоа, мора да утврдите дали на вашиот бизнис навистина му се потребни овие карактеристики пред да го направите преминот.

Основна команда: ALTER TABLE

За да конвертирате една табела од InnoDB во MyISAM, ви е потребен само еден ред код:

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

Откако ќе заврши извршувањето, моторот за складирање на табелата ќе се вклучи.

Не е ли тоа едноставно?

Групна конверзија: Автоматско генерирање на скрипти

Ако имате десетици или дури стотици табели, нивното рачно менување дефинитивно не е практично.

Во овој момент, едно барање може да се користи за автоматско генерирање на изјави за конверзија на серии:

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

Откако ќе се стартува, ќе прикаже еден куп... ALTER TABLE ... Изјава.

Копирајте ги овие наредби и извршете ги сите одеднаш за да ја завршите групната конверзија одеднаш.

Ова е она што е познато како „автоматизирана конверзија на серии“.

Проценка на ризик пред конверзија

Како да се конфигурираат базите на податоци MySQL/MariaDB за групно конвертирање на табелите на InnoDB во табели на MyISAM?

Ограничувања на странски клуч

InnoDB поддржува странски клучеви, додека MyISAM воопшто не ги поддржува.

Откако ќе заврши конверзијата, ограничувањата на надворешниот клуч ќе бидат отфрлени.

Ако вашиот бизнис се потпира на каскадни бришења или ажурирања, логиката целосно ќе откаже по конверзијата.

Поддршка за трансакции

InnoDB има трансакции и ги поддржува. COMMITROLLBACK.

MyISAM нема трансакции, само заклучувања на ниво на табела.

По конверзијата, целиот код поврзан со трансакцијата ќе стане неважечки, а враќањето на претходната верзија ќе биде невозможно во случај на исклучок.

Перформанси на истовременост

InnoDB користи заклучување на ниво на редови, додека MyISAM користи заклучување на ниво на табела.

Во сценарија со висока истовременост, MyISAM често ги заклучува табелите, што доведува до тесни грла во перформансите.

Карактеристики на индексот

MySQL, Пред верзијата 5.6, MyISAM имаше свој индекс на целосен текст.

Но MySQL, Индексирањето на целосен текст е веќе поддржано во верзиите 5.6 и 10+ на MariaDB и InnoDB.

Затоа, освен ако не користите постара верзија, нема потреба да се префрлате на MyISAM за индексирање на целиот текст.

Процес на најдобри практики

  1. Резервни податоци Пред конвертирање, задолжително извезете. .sql Датотеките се складираат за да се осигури дека можат да бидат обновени во секое време.

  2. Структура на контролната листа Користете ја следнава команда за да проверите дали постои странски клуч:

    SHOW CREATE TABLE `你的表名`;
    
  3. Изврши конверзија 使用 ALTER TABLE Алтернативно, може да се користат групни скрипти за да се заврши конверзијата.

  4. Проверете ја здравствената состојба Откако ќе заврши конверзијата, извршете:

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

    Ова потврдува дека табелата функционира правилно и ослободува фрагменти.

Метод на обратно закрепнување

Доколку по конверзијата се забележат проблеми со влошување на перформансите или деловна логика, можете да се вратите на InnoDB во секое време:

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

Ова е она што се нарекува „повратна операција“, што ви дава излез.

Цитирани авторитетни гледишта

Според Официјална документација на MySQL Објаснување:

"Конструкција на странски клуч"aints се поддржани само од InnoDB. Ако конвертирате табела во MyISAM, сите надворешни клучеви ќе бидат игнорирани.
——MySQL референтен прирачник, поглавје 14.6.6 Ограничувања на странски клучеви

Оваа изјава јасно ни кажува дека странските клучеви се целосно неважечки во MyISAM.

и Официјална документација на MariaDB Исто така беше нагласено дека:

„MyISAM не поддржува трансакции. Апликациите што се потпираат на трансакциски интегритет не треба да го користат MyISAM.“
——База на знаење на MariaDB, мотори за складирање

Затоа треба двапати да размислите пред да направите промена.

Мој став и заклучок

Конвертирањето на InnoDB во MyISAM е како замена на моторот на луксузен автомобил со мотор на камион.

Може да работи, но работи на сосема поинаков начин.

Ако вашиот бизнис вклучува лесни статистички пребарувања, брзината и едноставноста на MyISAM може да бидат посоодветни.

Меѓутоа, ако вашиот систем се потпира на трансакции и странски клучеви, нивното брзо конвертирање е како отстранување на воздушното перниче.

Затоа, вистинската мудрост не лежи во слепото стремење кон брзина, туку во балансирањето помеѓу стабилноста и перформансите.

Изборот на база на податоци ја одредува душата на системот.

Совладувањето на вештините за префрлување на мотори за складирање не е само демонстрација на техничка способност, туку и унапредување на архитектонското размислување.

Доколку размислувате за групна конверзија, прво спроведете сеопфатна проценка на ризикот.

Стартувајте ја тест-окружувањето еднаш за да симулирате реални деловни сценарија.

Откако ќе потврдите дека сè е правилно, извршете го во производствената средина.

Базите на податоци не се играчки; тие се срцето на податоците на претпријатието.

И ти си оној кој го контролира ритамот на твоето срце.

Блог на Hope Chen Weiliang ( https://www.chenweiliang.com/ Статијата „Како групно да конвертирате табели од InnoDB во табели од MyISAM во базите на податоци MySQL/MariaDB?“ споделена овде може да ви биде корисна.

Добредојдовте да ја споделите врската од оваа статија:https://www.chenweiliang.com/cwl-34157.html

За да отклучите повеќе скриени трикови🔑, добредојдени сте да се придружите на нашиот Телеграм канал!

Споделете и лајкнете ако ви се допаѓа! Вашите споделувања и лајкови се наша постојана мотивација!

 

评论

Вашата адреса за е-пошта нема да биде објавена. Се користат задолжителните полиња * Етикета

Директориум за статии
Дојдете до врв