تعد اختلافات الأداء بين استعلامات ORM البليغة في Laravel و SQL RAW مهمة وذات ساق في المقام الأول من التجريد ومعالجة النفقات العامة في بليغة مقارنة بالتنفيذ المباشر لـ SQL الخام.
الأداء العلوي في orm البليغة
يوفر البليغة طبقة رسم خرائط للكائنات التي تترجم سجلات قاعدة البيانات إلى كائنات PHP. يضيف هذا التجريد الراحة وسهولة القراءة ولكنه يقدم العديد من تكاليف الأداء:
- زيادة استخدام وحدة المعالجة المركزية واستخدام الذاكرة: يقوم ببلاغة بتثبيت كائن لكل سجل قاعدة بيانات تم استرداده أو معالجته ، والذي يستهلك المزيد من موارد الذاكرة ووحدة المعالجة المركزية من SQL الخام التي تعمل مباشرة على صفوف البيانات دون تحويل الكائن [3] [6].
- أوقات التنفيذ الأبطأ: نظرًا للمعالجة الإضافية ، تستغرق الاستعلامات البليغة بشكل عام وقتًا أطول لتنفيذها. هذا واضح بشكل خاص في العمليات السائبة مثل إدخال أو تحديث الآلاف من السجلات ، حيث تتراكم النفقات العامة البليغة بشكل كبير [3] [6].
- توليد الاستعلام المعقد: بالنسبة للعمليات التي تتضمن صلة متعددة من الجدول ، غالبًا ما يولد بليغة استعلامات SQL متعددة أو استعلامات معقدة أقل تحسينًا من استعلام SQL Raw SQL المصنوع جيدًا. هذا يؤدي إلى أوقات تنفيذ أطول في عمليات محددة مع صلة متعددة [3].
مزايا SQL الخام
RAW SQL RAW تتجاوز طبقة ORM ، وإرسال أوامر SQL المباشرة إلى قاعدة البيانات. هذا ينتج عنه:
- التنفيذ بشكل أسرع: يتم تنفيذ استعلامات SQL الخام بشكل أسرع لأنها تتجنب النفقات العامة لإنشاء الكائنات وطبقات الترجمة. تُظهر اختبارات الأداء أن SQL RAW تتفوق على بليغة في إدراج العمليات وتحديثها وتحديدها ، مع زيادة الاختلافات الزمنية مع نمو حجم البيانات أو تعقيد الاستعلام [3] [6].
- أفضل للعمليات بالجملة والمعقدة: SQL الخام أكثر كفاءة في الإدراج/التحديثات بالجملة والاستعلامات المعقدة التي تتضمن صلة متعددة ، لأنها تتيح التحكم الدقيق في بنية الاستعلام والتحسين [3] [6].
متى تستخدم كل
- ORM البليغة: الأنسب للتطبيقات الصغيرة إلى المتوسطة الحجم مع عمليات CRUD بسيطة نسبيًا ومجموعات بيانات أصغر. إنه يعزز إنتاجية المطور ، وقابلية قراءة الكود ، والقابلية للصيانة ، وميزات الأمان ، مما يجعلها مثالية عندما لا يكون الأداء الخام أمرًا بالغ الأهمية [3] [6].
- RAW SQL: مفضل للتطبيقات المهمة للأداء التي تتعامل مع كميات كبيرة من البيانات أو العمليات بالجملة أو الاستعلامات المعقدة حيث تكون سرعة التنفيذ أمرًا بالغ الأهمية. يوفر RAW SQL مزيدًا من التحكم والكفاءة في هذه السيناريوهات [3] [6].
ملخص
في حين أن ORM البليغة توفر وسائل تنمية مهمة ، إلا أنها تتحمل عقوبة أداء قابلة للقياس مقارنة باستعلامات SQL الخام. الفرق هو الأكثر بروزًا في عمليات البيانات على نطاق واسع والاستعلامات المعقدة. ينفذ RAW SQL بشكل أسرع ويستخدم موارد أقل ولكنه يتطلب المزيد من إدارة الاستعلام اليدوي. يعتمد الاختيار بينهما على متطلبات أداء التطبيق وأولويات التطوير [3] [6].
الاستشهادات:
[1]
[2] https://laravel.io/forum/04-23-2014-eloquent-vs-raw-sql-hich-is-real-better
[3] https://www.diva-portal.org/smash/get/diva2:1014983/fulltext02
[4] https://stackoverflow.com/questions/14570568/speed-comparison-between-eloquent-orm-query-builder-and-row-sql-ieries
[5] https://www.youtube.com/watch؟v=n_rbsojfcau
[6]
[7] https://dev.to/hesamrad/laravel-orm-vs-query-builder-vs-sql-peed-test-4knf
[8] https://stackoverflow.com/questions/38391710/what-e-the-key-defferences-between-laravels-eloquent-orm-and-query-builder