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 Толық мәтінді индекстеу MariaDB және InnoDB бағдарламаларының 5.6 және 10+ нұсқаларында қолдау тапқан.

Сондықтан, егер сіз ескі нұсқасын пайдаланбасаңыз, толық мәтінді индекстеу үшін 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/ Осында бөлісілген «MySQL/MariaDB дерекқорларында InnoDB кестелерін MyISAM кестелеріне қалай пакеттік түрде түрлендіруге болады?» мақаласы сізге пайдалы болуы мүмкін.

Осы мақаланың сілтемесін бөлісуге қош келдіңіз:https://www.chenweiliang.com/cwl-34157.html

Көбірек жасырын трюктердің құлпын ашу үшін🔑 Telegram каналымызға қосылыңыз!

Бөлісу және ұнаса лайк! Сіздің бөлісулеріңіз бен лайктарыңыз біздің тұрақты мотивациямыз болып табылады!

 

Пікірлер

Электрондық пошта мекенжайыңыз жарияланбайды. 必填 项 已 用 * 标注

Мақала анықтамалығы
Топ Scroll