Հոդվածների տեղեկատու
Տվյալների բազայի աղյուսակի պահեստավորման շարժիչը նման է մեքենայի շարժիչին. շարժիչի փոփոխությունը անմիջապես փոխում է աշխատանքի արդյունավետությունը և բնութագրերը: Շատերը կարծում են, որ տվյալների բազան նախատեսված է միայն տվյալներ պահելու համար, բայց երբ դուք իրականում սկսում եք աշխատել դրա վրա... InnoDB- ը 转成 ՄայիսամՄիայն այդ դեպքում կբացահայտեք դրա հետևում թաքնված գաղտնիքները։
Ինչո՞ւ պետք է մեկը ցանկանա 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 ... Հայտարարություն։
Պատճենեք այս հրամանները և կատարեք դրանք բոլորը միաժամանակ՝ խմբաքանակային փոխակերպումը մեկ քայլով ավարտելու համար։
Սա այն է, ինչը հայտնի է որպես «ավտոմատ խմբաքանակային փոխակերպում»։
Ռիսկի գնահատումը փոխակերպումից առաջ

Արտաքին բանալու սահմանափակումներ
InnoDB-ն աջակցում է արտաքին բանալիներին, մինչդեռ MyISAM-ը ընդհանրապես չի աջակցում դրանք։
Փոխակերպումն ավարտվելուց հետո արտաքին բանալու սահմանափակումները կանտեսվեն։
Եթե ձեր բիզնեսը հույսը դնում է կասկադային ջնջումների կամ թարմացումների վրա, տրամաբանությունը լիովին կխափանվի փոխակերպումից հետո։
Գործարքների աջակցություն
InnoDB-ն ունի գործարքներ և աջակցում է դրանք։ COMMIT 和 ROLLBACK.
MyISAM-ը գործարքներ չունի, միայն աղյուսակի մակարդակի կողպեքներ։
Փոխակերպումից հետո գործարքի հետ կապված բոլոր կոդերը կդառնան անվավեր, և բացառության դեպքում հնարավոր չի լինի հետադարձել։
Միաժամանակյա կատարողականություն
InnoDB-ն օգտագործում է տողերի մակարդակի կողպում, մինչդեռ MyISAM-ը՝ աղյուսակների մակարդակի կողպում։
Բարձր զուգահեռականության սցենարներում MyISAM-ը հաճախ արգելափակում է աղյուսակները, ինչը հանգեցնում է կատարողականի խափանումների։
Ինդեքսի առանձնահատկություններ
在 MySQL Մինչև 5.6 տարբերակը MyISAM-ն ուներ իր սեփական լրիվ տեքստային ինդեքսը։
Բայց MySQL Լրիվ տեքստի ինդեքսավորումն արդեն իսկ աջակցվում է MariaDB-ի և InnoDB-ի 5.6 և 10+ տարբերակներում։
Հետևաբար, եթե դուք չեք օգտագործում ավելի հին տարբերակ, ապա լրիվ տեքստի ինդեքսավորման համար անհրաժեշտ չէ անցնել MyISAM-ի։
Լավագույն փորձի գործընթաց
Պահուստային տվյալներ Փոխակերպելուց առաջ համոզվեք, որ արտահանել եք։
.sqlՖայլերը պահվում են այնպես, որ դրանք կարողանան վերականգնվել ցանկացած պահի։Ստուգաթերթիկի կառուցվածքը Օգտագործեք հետևյալ հրամանը՝ ստուգելու համար, թե արդյոք գոյություն ունի արտաքին բանալի.
SHOW CREATE TABLE `你的表名`;Կատարել փոխակերպում 使用
ALTER TABLEԱյլընտրանքորեն, փոխակերպումն ավարտելու համար կարող են օգտագործվել խմբաքանակային սկրիպտներ։Ստուգեք առողջական վիճակը Փոխակերպումն ավարտվելուց հետո գործարկեք հետևյալը.
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Սա հաստատում է, որ աղյուսակը ճիշտ է գործում և ազատում է բեկորները։
Հակադարձ վերականգնման մեթոդ
Եթե փոխակերպումից հետո նկատվում են կատարողականի վատթարացում կամ բիզնես տրամաբանության խնդիրներ, կարող եք ցանկացած պահի վերադառնալ InnoDB-ին։
ALTER TABLE `你的表名` ENGINE = InnoDB;
Սա այսպես կոչված «շրջելի գործողություն» է, որը ձեզ ելք է տալիս։
Մեջբերված հեղինակավոր տեսակետներ
Համաձայն MySQL-ի պաշտոնական փաստաթղթերը Բացատրություն՝
"Արտաքին բանալու կառուցում"aint-ները աջակցվում են միայն InnoDB-ի կողմից: Եթե դուք աղյուսակը փոխարկեք MyISAM-ի, բոլոր արտաքին բանալիները կանտեսվեն:
——MySQL-ի տեղեկատու ձեռնարկ, գլուխ 14.6.6 Արտաքին բանալու սահմանափակումներ
Այս հայտարարությունը հստակ ցույց է տալիս, որ MyISAM-ում արտաքին բանալիները լիովին անվավեր են։
և MariaDB պաշտոնական փաստաթղթեր Նաև ընդգծվեց, որ.
«MyISAM-ը չի աջակցում գործարքներին։ Գործարքների ամբողջականության վրա հիմնված հավելվածները չպետք է օգտագործեն MyISAM-ը։»
——MariaDB գիտելիքների բազա, պահեստավորման շարժիչներ
Ահա թե ինչու պետք է երկու անգամ մտածել, նախքան փոփոխություն կատարելը։
Իմ տեսակետը և եզրակացությունը
InnoDB-ը MyISAM-ի փոխակերպելը նման է շքեղ մեքենայի շարժիչը բեռնատարի շարժիչով փոխարինելուն։
Այն կարող է վազել, բայց այն վազում է բոլորովին այլ ձևով։
Եթե ձեր բիզնեսը ներառում է թեթև վիճակագրական հարցումներ, MyISAM-ի արագությունն ու պարզությունը կարող են ավելի հարմար լինել։
Սակայն, եթե ձեր համակարգը հիմնված է գործարքների և օտարերկրյա բանալիների վրա, դրանք անխոհեմ կերպով փոխակերպելը նման է օդային բարձիկը հանելուն։
Հետևաբար, իրական իմաստությունը կայանում է ոչ թե արագության կուրորեն հետապնդման մեջ, այլ կայունության և կատարողականի հավասարակշռության մեջ։
Տվյալների բազայի ընտրությունը որոշում է համակարգի էությունը։
Պահեստային շարժիչները փոխելու հմտությունների տիրապետումը ոչ միայն տեխնիկական կարողությունների ցուցադրում է, այլև ճարտարապետական մտածողության բարձրացում։
Եթե մտածում եք զանգվածային փոխակերպման մասին, խնդրում ենք նախ անցկացնել համապարփակ ռիսկերի գնահատում։
Գործարկեք թեստային միջավայրը մեկ անգամ՝ իրական բիզնես սցենարներ մոդելավորելու համար։
Ամեն ինչ ճիշտ է հաստատվելուց հետո, կատարեք այն արտադրական միջավայրում։
Տվյալների բազաները խաղալիքներ չեն, դրանք ձեռնարկության տվյալների սիրտն են։
Եվ դու ես, ով կառավարում է քո սրտի ռիթմը։
Հույս Chen Weiliang բլոգ ( https://www.chenweiliang.com/ Այստեղ ներկայացված «Ինչպե՞ս խմբաքանակով փոխարկել InnoDB աղյուսակները MyISAM աղյուսակների MySQL/MariaDB տվյալների բազաներում» հոդվածը կարող է օգտակար լինել ձեզ համար։
Բարի գալուստ՝ կիսելու այս հոդվածի հղումը.https://www.chenweiliang.com/cwl-34157.html
