Maqolalar katalogi
Ma'lumotlar bazasi jadvalining saqlash mexanizmi avtomobil dvigateliga o'xshaydi; dvigatelni almashtirish darhol ishlash va xususiyatlarni o'zgartiradi. Ko'p odamlar ma'lumotlar bazasi faqat ma'lumotlarni saqlash uchun deb o'ylashadi, lekin aslida u ustida ishlay boshlaganingizda... InnoDB 转成 MyISAMShundagina siz uning ortidagi yashirin sirlarni kashf etasiz.
Nima uchun kimdir InnoDB dan MyISAM ga o'tishni xohlaydi?
Ko'pgina hollarda, MyISAM tezroq ishlaydi, ayniqsa jurnal va statistika ma'lumotlar bazalari kabi o'qish uchun ko'p va yozish uchun yengil dasturlar uchun.
Uning stol darajasidagi qulflash mexanizmi past parallellik sharoitida juda ravon ishlaydi.
Bundan tashqari, MyISAM fayl saqlash tizimi yanada intuitiv; biri .MYD Saqlash ma'lumotlari, bitta .MYI Indekslarni saqlash, ko'chirish va zaxiralash juda qulay.
Biroq, murakkab biznes stsenariylarida InnoDB tranzaksiyalari va xorijiy kalitlarni qo'llab-quvvatlash deyarli zaruratdir.
Shuning uchun, o'tishni amalga oshirishdan oldin, biznesingiz haqiqatan ham ushbu xususiyatlarga muhtojmi yoki yo'qligini aniqlashingiz kerak.
Asosiy buyruq: ALTER TABLE
Bitta jadvalni InnoDB dan MyISAM ga o'zgartirish uchun sizga faqat bitta qator kod kerak bo'ladi:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Bajarish tugagandan so'ng, jadvalning saqlash mexanizmi almashtiriladi.
Bu oddiy emasmi?
Ommaviy konversiya: Avtomatik skript yaratish
Agar sizda o'nlab yoki hatto yuzlab jadvallar bo'lsa, ularni qo'lda o'zgartirish, albatta, amaliy emas.
Ushbu nuqtada, bitta so'rov avtomatik ravishda ommaviy konversiya bayonotlarini yaratish uchun ishlatilishi mumkin:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Ishga tushgandan so'ng, u bir nechta natija beradi... ALTER TABLE ... Bayonot.
Ushbu ko'rsatmalarni nusxalash va bir vaqtning o'zida ommaviy konversiyani yakunlash uchun ularning barchasini bajaring.
Bu "avtomatlashtirilgan ommaviy konvertatsiya" deb nomlanadi.
Konversiyadan oldin xavfni baholash

Chet el kalit cheklovlari
InnoDB xorijiy kalitlarni qo'llab-quvvatlaydi, MyISAM esa ularni umuman qo'llab-quvvatlamaydi.
O'zgartirilgandan so'ng, xorijiy kalit cheklovlari to'g'ridan-to'g'ri bekor qilinadi.
Agar biznesingiz kaskadli o'chirishlar yoki yangilanishlarga tayansa, konversiyadan so'ng mantiq butunlay ishdan chiqadi.
Tranzaksiyalarni qo'llab-quvvatlash
InnoDB tranzaksiyalarga ega va ularni qo'llab-quvvatlaydi. COMMIT 和 ROLLBACK.
MyISAMda tranzaksiyalar yo'q, faqat jadval darajasidagi qulflar mavjud.
Konversiyadan so'ng, barcha tranzaksiya bilan bog'liq kodlar yaroqsiz bo'lib qoladi va istisno holatlarda qaytarib olish imkonsiz bo'ladi.
Parallellik samaradorligi
InnoDB qator darajasidagi qulflashdan foydalanadi, MyISAM esa jadval darajasidagi qulflashdan foydalanadi.
Yuqori parallellik stsenariylarida MyISAM tez-tez jadvallarni bloklaydi, bu esa ishlashdagi to'siqlarga olib keladi.
Indeks xususiyatlari
在 MySQL 5.6 versiyasidan oldin MyISAM o'zining to'liq matnli indeksiga ega edi.
Ammo ichida MySQL To'liq matnli indekslash allaqachon MariaDB va InnoDB ning 5.6 va 10+ versiyalarida qo'llab-quvvatlanadi.
Shuning uchun, agar siz eski versiyadan foydalanmasangiz, to'liq matnli indekslash uchun MyISAM-ga o'tishga hojat yo'q.
Eng yaxshi amaliyot jarayoni
Ma'lumotlarni zaxiralash Konvertatsiya qilishdan oldin, eksport qilishni unutmang.
.sqlFayllar istalgan vaqtda tiklanishi uchun saqlanadi.Tekshirish ro'yxati tuzilishi Chet el kaliti mavjudligini tekshirish uchun quyidagi buyruqdan foydalaning:
SHOW CREATE TABLE `你的表名`;Konversiyani amalga oshiring foydalanish
ALTER TABLEShu bilan bir qatorda, konversiyani yakunlash uchun ommaviy skriptlardan foydalanish mumkin.Sog'liqni saqlash holatini tekshiring Konvertatsiya tugagandan so'ng, quyidagi buyruqni bajaring:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Bu jadval to'g'ri ishlayotganini tasdiqlaydi va parchalarni chiqaradi.
Teskari tiklash usuli
Agar konversiyadan so'ng samaradorlikning pasayishi yoki biznes mantig'i bilan bog'liq muammolar kuzatilsa, istalgan vaqtda InnoDB ga qaytishingiz mumkin:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Bu "qaytariladigan operatsiya" deb ataladi, bu sizga chiqish yo'lini beradi.
Imtiyozli nuqtai nazarlar keltirilgan
Ko'ra MySQL rasmiy hujjatlari Izoh:
"Xorijiy kalit konstruktsiyasi"aints faqat InnoDB tomonidan qo'llab-quvvatlanadi. Agar siz jadvalni MyISAM ga o'zgartirsangiz, barcha xorijiy kalitlar e'tiborga olinmaydi.
——MySQL ma'lumotnomasi, 14.6.6-bob. Tashqi kalit cheklovlari
Ushbu bayonot bizga MyISAM-da xorijiy kalitlarning mutlaqo yaroqsiz ekanligini aniq ko'rsatib turibdi.
va MariaDB rasmiy hujjatlari Shuningdek, quyidagilar ta'kidlandi:
"MyISAM tranzaksiyalarni qo'llab-quvvatlamaydi. Tranzaksiya yaxlitligiga tayanadigan ilovalar MyISAMdan foydalanmasligi kerak."
——MariaDB bilim bazasi, saqlash tizimlari
Shuning uchun o'zgartirish kiritishdan oldin ikki marta o'ylab ko'rishingiz kerak.
Mening nuqtai nazarim va xulosam
InnoDB ni MyISAM ga o'zgartirish hashamatli avtomobil dvigatelini yuk mashinasi dvigateliga almashtirishga o'xshaydi.
U ishlashi mumkin, lekin butunlay boshqacha tarzda ishlaydi.
Agar biznesingiz yengil statistik so'rovlarni o'z ichiga olsa, MyISAM tezligi va soddaligi ko'proq mos kelishi mumkin.
Biroq, agar tizimingiz tranzaksiyalar va xorijiy kalitlarga tayansa, ularni shoshilinch ravishda konvertatsiya qilish xavfsizlik yostiqchasini olib tashlashga o'xshaydi.
Shuning uchun, chinakam donolik tezlikni ko'r-ko'rona ta'qib qilishda emas, balki barqarorlik va samaradorlik o'rtasidagi muvozanatni saqlashdadir.
Ma'lumotlar bazasini tanlash tizimning ruhini belgilaydi.
Kommutatsiya xotira dvigatellari ko'nikmalarini o'zlashtirish nafaqat texnik qobiliyatning namoyishi, balki me'moriy fikrlashning yuksalishi hamdir.
Agar siz ommaviy konvertatsiya qilishni ko'rib chiqayotgan bo'lsangiz, iltimos, avval keng qamrovli xavfni baholang.
Haqiqiy biznes stsenariylarini simulyatsiya qilish uchun sinov muhitini bir marta ishga tushiring.
Hammasi to'g'ri ekanligiga ishonch hosil qilganingizdan so'ng, uni ishlab chiqarish muhitida bajaring.
Ma'lumotlar bazalari o'yinchoq emas; ular korporativ ma'lumotlarning yuragi hisoblanadi.
Va siz yuragingiz ritmini boshqaradigan odamsiz.
Umid qilamanki, Chen Veyliang blogi ( https://www.chenweiliang.com/ Bu yerda baham ko'rilgan "MySQL/MariaDB ma'lumotlar bazalarida InnoDB jadvallarini MyISAM jadvallariga qanday qilib ommaviy ravishda o'zgartirish mumkin?" maqolasi siz uchun foydali bo'lishi mumkin.
Ushbu maqolaning havolasini baham ko'rish uchun xush kelibsiz:https://www.chenweiliang.com/cwl-34157.html
