سؤال

لدي السؤال التالي:أقوم بتصميم تطبيق ويب يتضمن العشرات من جداول البحث الصغيرة:تحتوي هذه الجداول عادةً على ثلاثة أعمدة (المعرف والاسم والوصف) وصفين (في الغالب أقل من 50، والحد الأقصى حوالي 450).

من المتوقع أن تتغير جداول البحث هذه نادرًا فقط (فهي تأتي من المعيار، الذي يتغير مرة واحدة كل عدة سنوات) وسيتم استخدامها فقط من أجل:

  • خيارات التعبئة في تحديد HTML
  • يتم ضمها إلى سجلات أخرى في التقارير

سيكون هناك فقط SELECT البيانات على هذه الجداول 99٪ من المرات، ولكن سيكون هناك الكثير منها.

أنا أتساءل، ما هو محرك قاعدة البيانات الذي سيكون أكثر كفاءة في الاستخدام؟

وهنا اعتباراتي:

ذاكرة

  • طليعة:سريع جدا
  • يخدع:إذا تعطل الخادم، فسيتم فقدان جميع البيانات ويجب إعادة إنشائها
  • يخدع:لا يدعم المفاتيح الخارجية

MyISAM المضغوط

  • طليعة:سريع
  • يخدع:لا يدعم المفاتيح الخارجية

InnoDB

  • طليعة:دعم المفتاح الخارجي

ما أود أن أسأله هو ما إذا كانت هناك ميزة كبيرة في استخدام شيء مختلف عن InnoDB - أداء الحكمة

شكرا زبينك

هل كانت مفيدة؟

المحلول

لقد أجبت على سؤال مماثل في أغسطس 2011: ما هو نظام إدارة قواعد البيانات (DBMS) المناسب للقراءة فائقة السرعة وبنية البيانات البسيطة؟

بما أنك تسأل عن MySQL وأي محرك تخزين.لنكون صادقين، من الصعب القول، لأن هناك حالات نادرة يمكن أن يتفوق فيها MyISAM على InnoDB عندما يتعلق الأمر بالتحديدات.

فيما يلي بعض مشاركاتي السابقة حول هذا الجدل

ربما تسأل الآن:لماذا أفضّل MyISAM على InnoDB؟

ألقِ نظرة على هذا الرسم البياني (الذي أنشأه Vadim Tkachenko، Percona CTO)

InnoDB Architecture

سيقوم MyISAM بتخزين الفهارس مؤقتًا وسيحتوي الجدول الخاص بك على فهرسين (المفتاح الأساسي في المعرف وفهرس الاسم).من ناحية أخرى، يحتوي InnoDB على عدد كبير جدًا من الأجزاء المتحركة التي لا يمكن استيعابها، خاصة إذا كان يتعين على InnoDB Buffer Pool تحميل ورفض 16 ألف صفحة بشكل دوري.

لكي نكون منصفين، يجب عليك إجراء تجربة.

سيعطيك هذا أفضل تقييم لاختيار محرك التخزين لمجموعة البيانات الخاصة بك.

جربها !!!

نصائح أخرى

  • "MyISAM المضغوط" - ما هذا؟ربما "الأرشيف"؟
  • ليست هناك حاجة للضغط.الجداول صغيرة جدًا، وسيتم تخزينها مؤقتًا بالكامل بسرعة.
  • FOREIGN KEYS -- لماذا؟لقد قمت بتصحيح التعليمات البرمجية الخاصة بك، أليس كذلك؟لن يكون هناك أشياء متدلية للتحقق منها.
  • MEMORY ليس من غير المعقول، لو تقوم بكتابة كود "إعادة التحميل" الذي يتم تنفيذه عندما تقوم بإحضار الخادم، ويتم كتابة أي تحديثات للجدول لكليهما في MEMORY جدول النسخ الاحتياطي المستمر.
  • MyISAM ROW_FORMAT=FIXED -- تلك حكاية زوجة عجوز؛يستخدم DYNAMIC و VARCHARs.
  • InnoDB "متجمع" PRIMARY KEY يجعل عمليات البحث أسرع قليلاً من MyISAM لغرضك.
  • هل أنت يعرف أن جداول البحث تسبب تباطؤًا ملحوظًا؟أنا أشك بجدية في أنهم كذلك.
  • يفعل لا استخدم جداول البحث عن القيم "المستمرة"، مثل FLOATs و DATEs.

أنا أصوت لصالح InnoDB بدون FKs.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top