"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > نصائح لتحسين MySQL

نصائح لتحسين MySQL

تم النشر بتاريخ 2024-11-01
تصفح:561

MySQL Optimize Tips

تحسين هيكل قاعدة البيانات

تحسين حجم البيانات

→ تقليل كمية البيانات المكتوبة على القرص والمقروءة منه

→ ذاكرة رئيسية أقل أثناء معالجة محتوياتها بشكل نشط أثناء تنفيذ الاستعلام

→ النتائج في فهارس أصغر يمكن معالجتها بشكل أسرع

أعمدة الجدول

  • استخدام أنواع البيانات الأكثر كفاءة (الأصغر) الممكنة
  • أعلن أن الأعمدة ليست فارغة إن أمكن ← استخدام أفضل للفهارس وإزالة الحمل الزائد لاختبار ما إذا كانت كل قيمة فارغة أم لا.

الفهارس

  • يجب أن يكون الفهرس الأساسي للجدول قصيرًا قدر الإمكان
  • قم بإنشاء الفهارس التي تحتاجها فقط لتحسين أداء الاستعلام. الفهارس جيدة للاسترجاع، ولكنها تبطئ عمليات الإدراج والتحديث.
  • البحث على مجموعة من الأعمدة ← إنشاء فهرس مركب
  • يجب أن يكون العمود الأول في الفهرس هو العمود الأكثر تكرارًا ← للحصول على ضغط أفضل للفهرس.

الانضمام

  • قم بتعريف الأعمدة التي تحتوي على معلومات متطابقة في جداول مختلفة ذات أنواع بيانات متطابقة → نفس نوع البيانات
  • اجعل أسماء الأعمدة بسيطة،

تطبيع

  • عادة، حاول إبقاء كافة البيانات غير زائدة عن الحاجة
  • إذا كانت السرعة أكثر أهمية من مساحة القرص وتكاليف الصيانة للاحتفاظ بنسخ متعددة من البيانات

تحسين نوع البيانات

  • بالنسبة للمعرفات الفريدة أو القيم الأخرى التي يمكن تمثيلها كسلاسل أو أرقام، → يمكن تخزين القيم الرقمية في بايتات أقل من السلاسل المقابلة، بشكل أسرع ويستغرق ذاكرة أقل لنقلها ومقارنتها.
  • عند مقارنة القيم من أعمدة مختلفة، قم بتعريف تلك الأعمدة بنفس مجموعة الأحرف والترتيب حيثما أمكن → تجنب تحويلات السلسلة
  • بالنسبة لقيم الأعمدة التي يقل حجمها عن 8 كيلو بايت، استخدم الثنائي VARCHAR بدلاً من BLOB. يمكن لجملتي GROUP BY وORDER BY إنشاء جداول مؤقتة، ويمكن لهذه الجداول المؤقتة استخدام محرك التخزين MEMORY إذا كان الجدول الأصلي لا يحتوي على أي أعمدة BLOB.
  • إذا كان الجدول يحتوي على أعمدة سلسلة ولا يمكن الوصول إليه بشكل متكرر → انقسم إلى جدول آخر وانضم → عندما يسترد MySQL أي قيمة من صف ما، فإنه يقرأ كتلة بيانات تحتوي على جميع أعمدة هذا الصف (وربما صفوف أخرى مجاورة). إن إبقاء كل صف صغيرًا، مع الأعمدة الأكثر استخدامًا فقط، يسمح باحتواء المزيد من الصفوف في كل كتلة بيانات.
  • عند استخدام قيمة تم إنشاؤها عشوائيًا كمفتاح أساسي في جدول InnoDB، ابدأها بقيمة تصاعدية مثل التاريخ والوقت الحاليين إن أمكن.
  • بالنسبة لجدول يحتوي على عدة أعمدة، لتقليل متطلبات الذاكرة للاستعلامات التي لا تستخدم عمود BLOB، فكر في تقسيم عمود BLOB إلى جدول منفصل والإشارة إليه باستعلام ربط عند الحاجة
  • • نظرًا لأن متطلبات الأداء لاسترداد وعرض قيمة BLOB قد تكون مختلفة تمامًا عن أنواع البيانات الأخرى، فيمكنك وضع الجدول الخاص بـ BLOB على جهاز تخزين مختلف أو حتى منفصل مثيل قاعدة البيانات. على سبيل المثال، قد يتطلب استرداد BLOB قراءة قرص تسلسلي كبير يناسب محرك الأقراص الثابتة التقليدي بشكل أفضل من جهاز SSD.
  • بدلاً من اختبار المساواة مقابل سلسلة نصية طويلة جدًا، يمكنك تخزين تجزئة قيمة العمود في عمود منفصل، وفهرسة هذا العمود، واختبار القيمة المجزأة في الاستعلامات. (استخدم الدالة MD5() أو CRC32() لإنتاج قيمة التجزئة.)

تحسين عبارات SQL

لقد وجدنا أنه من المفيد تحليل طلب بحث ضعيف الأداء في خطوتين:

  • اكتشف ما إذا كان تطبيقك  يسترد بيانات أكثر مما تحتاج إليه. ويعني هذا عادةً أنه يصل إلى عدد كبير جدًا من الصفوف، ولكنه قد يصل أيضًا إلى عدد كبير جدًا من الأعمدة.
  • معرفة ما إذا كان خادم  MySQL server يقوم بتحليل صفوف أكثر مما يحتاج إليه.

تحسين عبارات التحديد

  • تجنب استخدام الوظائف في المسندات
  • تجنب استخدام حرف البدل (%) في بداية المسند
  • استخدم DISTINCT وUNION فقط إذا لزم الأمر
بيان الافراج تم نشر هذه المقالة على: https://dev.to/hulk-pham/mysql-optimize-tips-4oic?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3