دليل المادة
يُشبه محرك تخزين جدول قاعدة البيانات محرك السيارة؛ فتغيير المحرك يُغيّر الأداء والخصائص فورًا. يعتقد الكثيرون أن قاعدة البيانات تُستخدم فقط لتخزين البيانات، ولكن عندما تبدأ العمل عليها فعليًا... ك 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 ... إفادة.
انسخ هذه العبارات ونفذها جميعها دفعة واحدة لإكمال عملية التحويل المجمع في خطوة واحدة.
هذا ما يُعرف باسم "التحويل الآلي للدفعات".
تقييم المخاطر قبل التحويل

قيود المفتاح الخارجي
يدعم InnoDB المفاتيح الخارجية، بينما لا يدعمها MyISAM على الإطلاق.
بمجرد التحويل، سيتم تجاهل قيود المفتاح الخارجي مباشرة.
إذا كان عملك يعتمد على عمليات الحذف أو التحديث المتتالية، فسوف تفشل هذه الآلية تمامًا بعد التحويل.
دعم المعاملات
يحتوي محرك InnoDB على المعاملات ويدعمها. COMMIT و ROLLBACK.
لا يحتوي MyISAM على معاملات، بل يحتوي فقط على أقفال على مستوى الجدول.
بعد التحويل، ستصبح جميع التعليمات البرمجية المتعلقة بالمعاملات غير صالحة، وسيكون التراجع مستحيلاً في حالة حدوث استثناء.
أداء التزامن
يستخدم InnoDB نظام القفل على مستوى الصف، بينما يستخدم MyISAM نظام القفل على مستوى الجدول.
في سيناريوهات التزامن العالي، يقوم MyISAM بقفل الجداول بشكل متكرر، مما يؤدي إلى اختناقات في الأداء.
ميزات الفهرس
在 MySQL قبل الإصدار 5.6، كان لدى MyISAM فهرس نصي كامل خاص به.
اليوم MySQL يتم بالفعل دعم فهرسة النصوص الكاملة في الإصدارات 5.6 و 10+ من MariaDB و InnoDB.
لذلك، ما لم تكن تستخدم إصدارًا أقدم، فلا داعي للتحويل إلى MyISAM لفهرسة النصوص الكاملة.
عملية أفضل الممارسات
بيانات النسخ الاحتياطي قبل التحويل، تأكد من التصدير.
.sqlيتم تخزين الملفات لضمان إمكانية استعادتها في أي وقت.هيكل قائمة التحقق استخدم الأمر التالي للتحقق مما إذا كان المفتاح الخارجي موجودًا:
SHOW CREATE TABLE `你的表名`;إجراء التحويل استعمال
ALTER TABLEبدلاً من ذلك، يمكن استخدام البرامج النصية المجمعة لإكمال عملية التحويل.تحقق من الحالة الصحية بعد اكتمال عملية التحويل، قم بتشغيل:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;يؤكد هذا أن الجدول يعمل بشكل صحيح ويقوم بتحرير الأجزاء.
طريقة الاسترداد العكسي
إذا لوحظ تدهور في الأداء أو مشاكل في منطق الأعمال بعد التحويل، يمكنك العودة إلى InnoDB في أي وقت:
ALTER TABLE `你的表名` ENGINE = InnoDB;
هذا ما يسمى "العملية العكسية"، مما يمنحك مخرجًا.
تم الاستشهاد بوجهات نظر موثوقة
بحسب الوثائق الرسمية لـ MySQL توضيح:
"بناء المفتاح الأجنبي"aiلا تدعم InnoDB سوى nts. إذا قمت بتحويل جدول إلى MyISAM، فسيتم تجاهل جميع المفاتيح الخارجية.
——دليل مرجع MySQL، الفصل 14.6.6 قيود المفتاح الخارجي
هذا البيان يوضح لنا بوضوح أن المفاتيح الخارجية غير صالحة تمامًا في MyISAM.
而 الوثائق الرسمية لـ MariaDB كما تم التأكيد على ما يلي:
"لا يدعم MyISAM المعاملات. يجب ألا تستخدم التطبيقات التي تعتمد على سلامة المعاملات MyISAM."
قاعدة معارف MariaDB، محركات التخزين
لهذا السبب عليك التفكير ملياً قبل إجراء أي تغيير.
وجهة نظري واستنتاجي
إن تحويل InnoDB إلى MyISAM يشبه استبدال محرك سيارة فاخرة بمحرك شاحنة.
يمكنه أن يعمل، لكنه يعمل بطريقة مختلفة تماماً.
إذا كان عملك يتضمن استعلامات إحصائية بسيطة، فقد تكون سرعة وبساطة MyISAM أكثر ملاءمة.
ومع ذلك، إذا كان نظامك يعتمد على المعاملات والمفاتيح الخارجية، فإن تحويلها بشكل متسرع يشبه إزالة الوسادة الهوائية.
لذلك، فإن الحكمة الحقيقية لا تكمن في السعي الأعمى وراء السرعة، بل في تحقيق التوازن بين الاستقرار والأداء.
إن اختيار قاعدة البيانات يحدد جوهر النظام.
إن إتقان مهارات تبديل محركات التخزين ليس مجرد دليل على القدرة التقنية، بل هو أيضاً ارتقاء بالتفكير المعماري.
إذا كنت تفكر في التحويل بالجملة، فيرجى إجراء تقييم شامل للمخاطر أولاً.
قم بتشغيل بيئة الاختبار مرة واحدة لمحاكاة سيناريوهات الأعمال الحقيقية.
بعد التأكد من صحة كل شيء، قم بتنفيذ الأمر في بيئة الإنتاج.
قواعد البيانات ليست مجرد ألعاب؛ إنها جوهر بيانات المؤسسة.
وأنت من يتحكم في إيقاع قلبك.
مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ قد تكون المقالة "كيفية تحويل جداول InnoDB إلى جداول MyISAM في قواعد بيانات MySQL/MariaDB دفعة واحدة؟" التي تمت مشاركتها هنا مفيدة لك.
مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-34157.html
