InnoDB таблицаларын MyISAM таблицаларына пакеттик түрдө айландыруу үчүн MySQL/MariaDB маалымат базаларын кантип конфигурациялоо керек?

Маалымат базасынын таблицасынын сактоо кыймылдаткычы унаанын кыймылдаткычына окшош; кыймылдаткычты алмаштыруу дароо иштин натыйжалуулугун жана мүнөздөмөлөрүн өзгөртөт. Көп адамдар маалымат базасы жөн гана маалыматтарды сактоо үчүн деп ойлошот, бирок сиз анын үстүндө иштей баштаганда... InnoDB 转成 MyISAMОшондо гана анын артындагы жашыруун сырларды таба аласыз.

Эмне үчүн кимдир бирөө InnoDBден MyISAMга өткүсү келет?

Көптөгөн сценарийлерде MyISAM тезирээк иштейт, айрыкча журнал жана статистикалык маалымат базалары сыяктуу окууну көп талап кылган жана жазууну жеңил талап кылган тиркемелер үчүн.

Анын стол деңгээлиндеги кулпулоо механизми аз параллелдүүлүктө чындыгында абдан жылмакай иштейт.

Мындан тышкары, MyISAM файл сактоосу алда канча интуитивдүү; бири .MYD Маалыматтарды сактоо, бир .MYI Индекстерди сактоо, көчүрүү жана камдык көчүрмөлөрдү сактоо абдан ыңгайлуу.

Бирок, InnoDB транзакцияларын жана чет элдик ачкычтарды колдоо татаал бизнес сценарийлеринде дээрлик зарыл.

Ошондуктан, өткөөлдү жасоодон мурун, бизнесиңизге чындыгында ушул функциялар керекпи же жокпу, аныктап алышыңыз керек.

Негизги буйрук: ТАБЛИЦАНЫ ӨЗГӨРТҮҮ

Бир таблицаны 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 ... Билдирүү.

Бул операторлорду көчүрүп, баарын бир убакта аткарып, пакеттик конвертацияны бир убакта бүтүрүңүз.

Бул "автоматташтырылган партиялык конвертация" деп аталат.

Конверсиядан мурун тобокелдикти баалоо

InnoDB таблицаларын MyISAM таблицаларына пакеттик түрдө айландыруу үчүн MySQL/MariaDB маалымат базаларын кантип конфигурациялоо керек?

Чет элдик ачкыч чектөөлөрү

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 каналыбызга кошулуңуз!

Бөлүшүп, жакса лайк! Сиздин бөлүшүүлөрүңүз жана лайктарыңыз биздин туруктуу мотивациябыз!

 

发表 评论

Сиздин электрондук почта дарегиңиз жарыяланбайт. Милдеттүү талаалар колдонулат * 标注

Article Directory
Жылдыруу үчүн Top