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

كيف يعمل ضبط MySQL على تحسين أداء Laravel

تم النشر بتاريخ 2024-07-30
تصفح:930

يعد ضبط تكوين MySQL مكونًا مهمًا لإدارة قواعد البيانات التي ينفذها متخصصو قواعد البيانات والمسؤولون. ويهدف إلى تكوين قاعدة البيانات لتناسب أجهزتها وعبء العمل. ولكن خارج نطاق إدارة قاعدة البيانات، يتم تجاهل فائدة ضبط تكوين MySQL إلى حد كبير.

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

كيفية تحسين أداء تطبيق Laravel

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

  • موارد الخادم - وحدة المعالجة المركزية والذاكرة والتخزين
  • تكوينات البرامج – Linux، Nginx، Php…
  • تكوينات نظام إدارة قواعد البيانات (DBMS) – MySQL، وPostgreSQL
  • تحسين نظام قاعدة البيانات وتغيير الفهارس
  • تحسين التطبيقات - التعليمات البرمجية والاستعلامات والهندسة المعمارية...

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

نهج الاختبار

يتيح لنا إجراء الاختبار الخاص بنا لـ Laravel Aimeos مقارنة أداء التطبيق قبل التكوين وبعده باستخدام البيانات المصنفة. من خلال إجراء الاختبار باستخدام التكوين الافتراضي أولاً، نحصل على نتائج تحكم قيمة لمقارنة التكوين المضبوط به.

لقد استخدمنا العملية التالية لإعداد واختبار كل تطبيق:

  1. نشر Laravel Aimeos.
  2. قاعدة بيانات البذور مع البيانات.
  3. التحضير لاختبار JMeter.
  4. قم بإجراء الاختبار لمدة 10 دقائق – قم بإجراء اختبار JMeter باستخدام منصة اختبار الأداء Blazemeter.
  5. ضبط تكوين MariaDB - بعد اختبار التكوين الافتراضي، ظل الإعداد لدينا كما هو، ولكن تم ضبط MariaDB ليتناسب مع عبء العمل وموارد الخادم وحجم قاعدة البيانات.
  6. اختبار إعادة التشغيل – كرر اختبار JMeter باستخدام Blazemeter للتكوين المضبوط.

قمنا بنشر اختبارات JMeter وحالة MySQL ومتغيرات MySQL أثناء الاختبارات على Github.

ما المقاييس التي نظرنا إليها؟

المقاييس التي نظرنا إليها خلال هذا البحث هي:

  1. وقت الاستجابة (زمن الوصول) هو الوقت بين إرسال الطلب ومعالجته على جانب الخادم إلى الوقت الذي يتلقى فيه العميل البايت الأول. إنه المقياس المهم الذي يمنحك نظرة ثاقبة على أداء الخادم.
  2. الاستعلامات في الثانية هو مقياس يقيس عدد الاستعلامات التي ينفذها خادم قاعدة البيانات في الثانية.
  3. استخدام وحدة المعالجة المركزية.

لقد جمعنا مقاييس استخدام وحدة المعالجة المركزية والاستعلامات في الثانية لمقارنة عبء العمل.

لارافيل ايميوس

Aimeos Laravel هو إطار عمل تطبيق ويب للتجارة الإلكترونية شائع لإنشاء متاجر عبر الإنترنت وأسواق وتطبيقات B2B. باستخدام Aimeos، يمكن للمستخدمين إنشاء متاجر التجارة الإلكترونية API-first لـ Laravel والتي يمكنها التوسع لدعم أكثر من مليار عنصر. إنه متوفر بأكثر من 30 لغة وتم تثبيته بأكثر من 300000.

إعداد الاختبار

لاختبار Aimeos، بدأنا الاختبار بعشرة مستخدمين، ولكن كان علينا تقليل عدد المستخدمين لأننا لم نتمكن من إنهاء الاختبار بالتكوين الافتراضي.

لقد قمنا بتزويد قاعدة البيانات ببيانات بحجم 500 ميجابايت.
كانت مدة الاختبار 10 دقائق.

كنا:

  • مثيل AWS EC2 c5.xlarge مع تثبيت Debian 11 كنظام تشغيل،
  • أباتشي كخادم ويب،
  • تم ضبط MariaDB 10.5 على التكوين الافتراضي بحجم قاعدة بيانات 500 ميجابايت.

تكوين ماي إس كيو إل

التكوين المستخدم لـ Aimeos Laravel هو كما يلي:

تكوين مضبوط لـ Laravel Aimeos 500 ميجابايت

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

نتائج الاختبار

أظهرت نتائج اختبار Aimeos Laravel تحسينات هائلة في الأداء بين التكوينات الافتراضية والمضبوطة.

أدى تحسين MySQL إلى تحسن كبير في متوسط ​​وقت استجابة الخادم ، والذي تم تقليله من 1.4 ثانية إلى أقل من 800 مللي ثانية.

انخفض زمن الاستجابة (زمن الاستجابة) بنسبة 42% ومتوسط ​​استخدام وحدة المعالجة المركزية بنسبة 86%، في حين زادت الاستعلامات في الثانية بنسبة مذهلة تبلغ 291%، من من 12 إلى 35 استعلامًا في الثانية.

الرسم البياني للنتائج متاح أدناه:

How MySQL Tuning Improves the Laravel Performanceزمن الاستجابة (بالمللي ثانية)، تكوين Aimeos Tuned MySQL مقابل الإعداد الافتراضي
How MySQL Tuning Improves the Laravel Performanceاستخدام وحدة المعالجة المركزية (%)، تكوين Aimeos Tuned MySQL مقابل الإعداد الافتراضي
How MySQL Tuning Improves the Laravel Performanceالاستعلامات في الثانية، Aimeos Tuned MySQL Configuration vs Default

المساهمين المجتمعيين

لقد تعاونا مع مطوري Laravel جيفورج مكرتشيان وسيرجي سينيتسا من شركة Initlab للتحقيق في هذا النوع من الأسئلة ونحن ممتنون جدًا لخبرتهم.

قام سيرجي بنشر Aimeos، وقام Gevorg بإعداد التعليمات البرمجية لبذر قاعدة البيانات.

خاتمة

أظهر إجراء الاختبار لدينا، باستخدام Aimeos Laravel، تحسينات هائلة في

وقت الاستجابة (زمن الاستجابة) ، استخدام وحدة المعالجة المركزية ، و الاستعلامات في الثانية بعد تكوين قاعدة البيانات تكوين الخادم.

انخفض زمن الاستجابة (زمن الاستجابة) بنسبة تتراوح بين 42%، بينما انخفض استخدام وحدة المعالجة المركزية بنسبة 86%. زيادة الاستعلامات في الثانية في Aimeos Laravel 500 ميجابايت بنسبة 291%.

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

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

باستخدام أدوات مثل Relem، يمكن تكوين قواعد البيانات تلقائيًا لتحقيق الأداء الأمثل، مما يقلل العبء على فرق تطوير البرامج.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3