مقدمة

هذه المقالة موجهة لمطوري قواعد البيانات.

سيتم في هذه المقالة دراسة الحلول المقترحة للمسألة 2، وذلك من خلال عرض نتائج الأداء للحلول المقترحة ومن ثم مناقشة تلك النتائج، وفي الختام عرض للأفكار المقترحة.

 الحلول المقترحة

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

عدد الحلول المقترحة هو 11 حلاً (9 حلول مرسلة مع حلين مقترحين من قبلي) وهي (مرتبة حسب تاريخ الإرسال):

دراسة الحلول

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

الجهاز الأول هو جهاز عادي بمواصفات متوسطة، أما الجهاز الثاني فهو مخدم بمواصفات جيدة.

قاعدة البيانات الأولى هي قاعدة بيانات متوسطة الحجم، أما قاعدة البيانات الثانية فهي قاعدة بيانات جيدة الحجم.

سيتم عرض النتائج على أربع جداول كل جدول يمثل حالة دراسة، ووفق المعايير التالية:

  1. الزمن الكلي الذي استغرقه تنفيذ الاستعلام بالميلي ثانية.
  2. زمن المعالجات CPU Time الذي استغرقه تنفيذ الاستعلام بالميلي ثانية، وقد يكون في بعض الأحيان أكبرمن الزمن الكلي وذلك نتيجة لأن خطة التنفيذ Execution Plan المستخدمة هي خطة تنفيذ تفرعية.
  3. عدد القراءات المنطقية Logical Reads التي تطلبها تنفيذ الاستعلام، وهي تمثل عدد القراءات من الذاكرة المخبئية Cache و لا يدخل ضمنها القراءات من الملفات الفيزيائية، هي تعد من أهم المعايير لدراسة أداء الاستعلامات، ولكنها ليست كافية لوحدها.
  4. عدد الكتابات Writes التي تطلبها تنفيذ الاستعلام، وهي تتضمن الكتابة على TempDB نتيجة استخدام جداول مؤقتة أو نتيجة خطة التنفيذ التي تشير إلى تخزين النتائج المؤقتة لتحسين أداء الاستعلامات.

ملاحظة:سترتب النتائج وفق معيار الزمن الكلي.

النتائج

جهاز عادي وقاعدة بيانات متوسطة الحجم

الترتيب الحل المقترح الزمن الكلي زمن المعالجات عدد القراءات المنطقية عدد الكتابات
1 وسيم العش1 17 15 186 0
2 محمد الباشا1 28 15 3173 0
3 محمود مسعود1 71 78 144 0
4 محمد الباشا2 122 125 374 0
5 محمود مسعود2 446 437 540 0
6 رضوان نصري1 475 469 186 0
7 محمد سليمان2 608 594 90062 0
8 أحمد غانم1 642 640 90230 0
9 محمد سليمان1 900 875 90356 0
10 زياد عبد المجيد1 5704 5672 9582 0
11 زياد عبد المجيد2 18545 18328 307852 2910

جهاز عادي وقاعدة بيانات جيدة الحجم

الترتيب الحل المقترح الزمن الكلي زمن المعالجات عدد القراءات المنطقية عدد الكتابات
1 محمد الباشا1 292 562 62740 0
2 وسيم العش1 358 359 4000 0
3 محمود مسعود1 1045 1266 4183 0
4 محمد الباشا2 8610 8406 7376 0
5 محمود مسعود2 9052 8953 6893 0
6 رضوان نصري1 9691 9515 4000 0
7 أحمد غانم1 19707 19281 2704883 2
8 محمد سليمان2 20712 20328 2701804 0
9 محمد سليمان1 51304 49672 2702927 0
10 زياد عبد المجيد1 224388 433546 5396525 6468
11 زياد عبد المجيد2 317279 309063 6159100 58200

جهاز جيد وقاعدة بيانات متوسطة الحجم

الترتيب الحل المقترح الزمن الكلي زمن المعالجات عدد القراءات المنطقية عدد الكتابات
1 وسيم العش1 13 16 186 0
2 محمد الباشا1 19 31 2725 0
3 محمود مسعود1 53 63 144 0
4 محمد الباشا2 66 63 374 0
5 محمود مسعود2 306 312 452 0
6 رضوان نصري1 320 312 186 0
7 محمد سليمان2 429 421 90062 0
8 أحمد غانم1 429 422 90212 0
9 محمد سليمان1 827 781 90356 0
10 زياد عبد المجيد1 3125 3109 9519 0
11 زياد عبد المجيد2 3552 3484 307941 2910

جهاز جيد وقاعدة بيانات جيدة الحجم

الترتيب الحل المقترح الزمن الكلي زمن المعالجات عدد القراءات المنطقية عدد الكتابات
1 محمد الباشا1 104 407 69243 0
2 وسيم العش1 253 250 4005 0
3 محمود مسعود1 767 938 4188 0
4 محمد الباشا2 1342 1329 7376 0
5 محمود مسعود2 6125 6094 6894 0
6 رضوان نصري1 6443 6438 4005 0
7 محمد سليمان2 8785 8766 2701804 0
8 أحمد غانم1 8861 8844 2704804 0
9 زياد عبد المجيد1 20341 79907 10589554 12943
10 محمد سليمان1 20837 12735 2702941 0
11 زياد عبد المجيد2 72583 71906 6159105 58200

 

مناقشة النتائج

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

أما في ما يخص حل السيد محمود مسعود رقم 1 فهو يستخدم الـ CLR في تعريف تابع تجميعي مناسب للمسألة، وهو من أسرع الحلول وأقلها كلفةً، ولكنه يتأثر قليلاً بثقل التعامل مع الـ CLR.

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

أما في ما يخص الحلول المقترحة من قبل السادة رضوان نصري ومحمود مسعود (الحل رقم2) وزياد عبد المجيد (الحل رقم 2) فهي تتشارك منهجية حل مشتركة (مقترحة أساساً من قبل السيد رضوان نصري) وهي تبين منهجية تفكير موجهة باستخدام التوابع التجميعية بدلاُ من حساب القيمة لكل سطر على حدا، وهي منهجية سليمة ومميزة.

أما في ما يخص الحلول المقترحة من قبل السادة محمد سليمان وأحمد غانم فهي تتشارك منهجية حل مشتركة (مقترحة أساساً من قبل السيد محمد سليمان) وهي تبين منهجية تفكير إجراءاتية وهي منهجية مفيدة في بعض الحالات ولكنها لم تستطع التفوق في هذه المسالة.

أما  في ما يخص حل السيد زياد عبد المجيد (الحل رقم 1) فهو ذو فكرة مميزة ولكن أداءه منخفص نتيجة آلية كتابة الاستعلام التي يمكن أن تكتب بشكل أكثر أمثلةً، وهو يتشارك مع حلي رقم 1 في الفكرة مع الاختلاف في كيفية صياغتها.

عرض للأفكار المقترحة

سأعدد الأفكار المقترحة من قبل المشاركين في حل المسألة وهي:

  • استخدام الـ CLR وقد تم اقتراحها من قبل السيد محمود مسعود.
  • استخدام التوابع التجميعية ودمجها ضمن الاستعلام كبنية واحدة، وقد تم اقتراحها أساساً من قبل السيد رضوان نصري.
  • استخدام ميزة الإسناد لمتحول من نتيجة استعلام تحوي أكثر من سطر، وقد تم اقتراحها من قبل السيد وسيم العش.
  • استخدام المنهجية الإجراءاتية وقد تم افتراحها أساساً من قبل السيد محمد سليمان.

الخاتمة

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