Како конфигурисати MySQL/MariaDB базе података за групно конвертовање 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';

Након покретања, избацићe гомилу... ALTER TABLE ... Изјава.

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

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

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

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

Ограничења спољног кључа

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

Када се конверзија заврши, ограничења страног кључа ће бити одбачена.

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

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

InnoDB има трансакције и подржава их. COMMITROLLBACK.

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

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

Конкурентне перформансе

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

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

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

Ин МиСКЛ Пре верзије 5.6, MyISAM је имао свој сопствени индекс пуног текста.

Али МиСКЛ Индексирање целог текста је већ подржано у верзијама 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-а могу бити прикладније.

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

Стога, права мудрост не лежи у слепом тежњи за брзином, већ у балансирању стабилности и перформанси.

Избор базе података одређује душу система.

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

Ако размишљате о масовној конверзији, прво спроведите свеобухватну процену ризика.

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

Након што се уверите да је све исправно, извршите га у производном окружењу.

Базе података нису играчке; оне су срж пословних података.

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

Блог Хопе Цхен Веилианг ( https://www.chenweiliang.com/ Чланак „Како групно конвертовати InnoDB табеле у MyISAM табеле у MySQL/MariaDB базама података?“ подељен овде може вам бити од помоћи.

Добродошли да поделите везу овог чланка:https://www.chenweiliang.com/cwl-34157.html

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

Поделите и лајкујте ако вам се свиђа! Ваша дељења и лајкови су наша стална мотивација!

 

评论

Ваша емаил адреса неће бити објављена. Обавезна поља се користе * Ознака

Артицле Дирецтори
Дођите на врх