الخلاصة

  • كان مُحسِّن System R يختار أدنى كلفة مقدرة بين الخطط التي وصل إليها البحث فعلاً. جمع النموذج بين صفحات متوقعة القراءة واستدعاءات موزونة لواجهة التخزين؛ ولم يقس زمن التنفيذ قبل حدوثه.
  • تنتقل فرضية الانتقائية إلى تقدير عدد الصفوف، ثم تغيّر مسار الوصول وترتيب الربط والمشغل المادي. واحتفظت «الترتيبات المهمة» بمسار أغلى محلياً إذا كان قادراً على تجنب فرز لاحق.
  • نظمت Selinger عملاً جماعياً شاركها فيه Morton Astrahan وDonald Chamberlin وRaymond Lorie وThomas Price. وما بقي هو فصل قابل للاختبار بين الفرضية والقرار المادي والمشاهدة الفعلية.

إجابة واحدة وآلتان مختلفتان

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

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

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

لهذا تعني «الأرخص» نتيجة مقارنة داخل النموذج. بعد التنفيذ فقط تظهر الصفوف الحقيقية والقراءات وعمل المعالج والذاكرة والمدة. الخلط بين السجلين يحول التوقع إلى يقين زائف.

نقلت SQL سلطة الطريق إلى قاعدة البيانات

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

قسم بحث 1979، Access Path Selection in a Relational Database Management System، العمل إلى أربع مراحل. يبني التحليل تمثيل الاستعلام. ويختار التحسين مواصفة وصول. ويحول توليد الشفرة تلك المواصفة إلى برنامج. ثم يأتي التنفيذ.

هذا الترتيب هو جوهر المسألة: يُختار المسار قبل أن يقدم التشغيل المعني أدلته. ومواصفة الوصول لا تعيد تعريف معنى الاستعلام؛ بل تحدد أي علاقة تأتي أولاً، وهل يُستخدم المسح أو الفهرس، وبأي ترتيب تقع عمليات الربط، وأي ترتيب للصفوف يستحق الحفاظ عليه.

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

كانت إحصاءات الفهرس صورة مضغوطة

استخدم System R قيماً في الفهرس النظامي، منها NCARD لعدد الصفوف في العلاقة، وTCARD لعدد الصفحات، وP لقياس الامتلاء، وICARD لعدد مفاتيح الفهرس المختلفة، وNINDX لصفحات الفهرس. أتاحت هذه الخلاصة مقارنة الطرق من دون قراءة البيانات كلها أولاً.

كانت الإحصاءات تُنشأ وتُحدَّث دورياً بواسطة UPDATE STATISTICS. ولم تتغير بعد كل تعديل في البيانات؛ إذ أوضح البحث أن كتابة الفهرس النظامي والأقفال ستجعلان هذه الدقة مكلفة.

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

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

من الانتقائية إلى عدد الصفوف

أعطى System R لكل شرط معامل انتقائية، أي النسبة المتوقعة من الصفوف التي تمر. وقد تستخدم مساواة مدعومة بفهرس عدد المفاتيح المختلفة. وعند غياب معلومات أفضل استُخدمت قيم عملية: عُشر الصفوف لمساواة بلا فهرس، وثلثها لمجال مفتوح، وربعها لمجال مغلق.

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

كان من الممكن ضرب معاملات الشروط المرتبطة بـAND. وفي ذلك افتراض للاستقلال. لكن المدينة والرمز البريدي، وفئة المنتج وسعره، ونوع العقد ومدته، أمور مترابطة عادة. وقد يجعل ضرب الاحتمالات الهامشية اجتماعاً شائعاً يبدو نادراً جداً.

يحوّل تقدير عدد الصفوف النسبة إلى كمية. يجمع منطق QCARD بين أحجام العلاقات ومعاملات الانتقائية، ثم يدخل الناتج في كلفة المشغلات اللاحقة. إذا قُدّر الطرف الخارجي لحلقة متداخلة بأقل من حقيقته، بدا التكرار رخيصاً؛ وفي التشغيل يتكرر العمل آلاف المرات. وإذا بُولغ في حجم مرشح فقد يُستبعد فهرس لا يلمس إلا صفحات قليلة.

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

وجد Leis وزملاؤه في 2015 أن أخطاء عدد الصفوف أضرت بجودة الخطط أكثر عادة من الانحرافات الصغيرة في دالة الكلفة. وفي مراجعتهم عام 2025 بقيت هذه الأخطاء والمتانة والتكيف مسائل مفتوحة. ما زالت الحلقة الأضعف في السلسلة القديمة حاضرة.

عملة مقارنة لا ساعة

نشرت الورقة الصيغة التالية:

COST = PAGE FETCHES + W × (RSI CALLS)

مثلت قراءات الصفحات الإدخال والإخراج، وقاربت استدعاءات Research Storage Interface عمل المعالج، وحدد W السعر النسبي بينهما. كان إدخال كلفة المعالجة تقدماً مهماً، لكنه لم يحول المجموع إلى ثوان.

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

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

توضح وثائق PostgreSQL الحديثة الحد نفسه. وحدات الكلفة اصطلاحية وتعتمد على المنصة، وليست ميلي ثانية. يعرض EXPLAIN التقديرات من دون تنفيذ، بينما ينفذ EXPLAIN ANALYZE ويضيف الصفوف والأزمنة الفعلية. الأول يشرح التوقع، والثاني يورد النتيجة التجريبية.

مسار الوصول والمشغل وترتيب الربط

يحدد مسار الوصول طريقة بلوغ علاقة أساسية: مسحاً أو فهرساً. ويحدد المشغل المادي كيفية الربط أو الفرز أو التجميع. ويحدد ترتيب الربط أي العلاقات تُجمع أولاً، ومن ثم أحجام النتائج الوسيطة.

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

تتفاعل هذه القرارات من دون أن تتطابق. وعند تشخيص البطء ينبغي السؤال: هل غاب طريق وصول؟ هل غير تقدير خاطئ ترتيب الربط؟ هل عُبر حد مشغل؟ هل ضاعت خاصية مادية نافعة؟

يحفظ التكافؤ العلائقي المعنى وفق قواعد القيم الفارغة والتكرار والتجميع. لكنه لا يَعِد بتساوي الموارد.

القيمة المستقبلية للترتيب المهم

قد يكون مسار الفهرس أغلى من المسح في الخطوة الحالية، لكنه يعطي الصفوف بترتيب مفتاح ربط لاحق، أو GROUP BY، أو ORDER BY النهائي. ويمكن لهذا الترتيب أن يلغي عملية فرز كاملة.

لذلك لم يحتفظ System R بأرخص خطة غير مرتبة فقط. احتفظ كذلك بأفضل خطة لكل «ترتيب مهم». إنتاج الصفوف نفسها لا يجعل خطتين وسيطتين قابلتين للتبادل بالكلفة نفسها؛ فالخصائص المادية تغير سعر بقية العمل.

للترتيب قيمة خيار. دفع مبلغ إضافي الآن قد يحافظ على فرصة توفير أكبر لاحقاً. ولو بقي الفائز المحلي وحده لاختلط السعر القريب بالأثر الكلي.

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

للبحث نفسه ميزانية

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

استخدم System R البرمجة الديناميكية. بُنيت خطط لمجموعات فرعية من العلاقات، وحُفظ أفضل ممثل بحسب الترتيب المهم، ثم أُعيد استخدامه لبناء مجموعات أكبر. وأُجلت الضروب الديكارتية قدر الإمكان لأنها تضخم النتائج الوسيطة من دون شرط ربط.

وصف البحث المساحة بدلالة المجموعات الفرعية والترتيبات المهمة، وذكر أن ربط ثمانية جداول أمكن تحسينه في ثوان على IBM 370/158. جعل هذا الضبط الفكرة قابلة للعمل.

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

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

نشر الفريق حدود النموذج

أقر بحث 1979 بأن الكلف المتوقعة لم تكن دقيقة غالباً كقيم مطلقة. وفي الوقت نفسه اختار النظام أفضل مسار مختبر في معظم الحالات ودعا إلى مزيد من التحقق. يمكن لترتيب أن يكون مفيداً من دون أن يكون معايراً بالثواني.

في 1986 قارن Mackert وLohman تقديرات R* بالاستهلاك الحقيقي. عمل جانب كبير من نموذج الإدخال والإخراج، لكن كلفة المعالج احتاجت إلى تفصيل، وافتراضات الذاكرة المؤقتة غيرت النتائج، وصعبت الحلقات المتداخلة بسبب تفاعل عدد صفوف الربط والطرف الخارجي والصفحات المتاحة.

لم تحصّن الصيغة نفسها بمظهرها الرياضي. صار الانحراف عن التنفيذ دليلاً على موضع تحسين الإحصاءات أو الأوزان أو فرضيات المشغلات أو التغذية الراجعة.

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

قيادة واضحة وائتمان جماعي

انضمت Patricia G. Selinger إلى IBM Research عام 1975. يسجل تاريخ IBM قيادتها لعمل تحسين System R، ثم أدوارها في R* وتقنيات قواعد البيانات. أصبحت IBM Fellow عام 1994، وانتُخبت في National Academy of Engineering الأمريكية عام 1999، وتقاعدت من IBM في 2018.

حملت ورقة 1979 خمسة أسماء. جاء P. Griffiths Selinger مع Morton M. Astrahan في فريق التأليف، وشاركهما Donald D. Chamberlin؛ ثم ضمت القائمة Raymond A. Lorie وأخيراً Thomas G. Price. يقول Chamberlin في شهادته الشفوية إن Selinger نظمت عمل التحسين والورقة الحاسمة، ويذكر في الوقت نفسه إسهامات Lorie وPrice وAstrahan. ويضع تاريخ IBM الأوسع هذا العمل إلى جانب نموذج Edgar Codd العلائقي، وSQL لدى Chamberlin وRaymond Boyce، ومترجم Lorie، وبرنامج System R كله.

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

بقيت الحدود لأنها قابلة للتصحيح

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

الخطة المختارة توقع مأذون به. فازت بالمقارنة التي استطاع النظام إجراءها وفق الأدلة المتاحة. ولم تفز بالواقع بعد.

عندما يُحفظ التقدير والمشاهدة معاً تصبح المسافة بينهما مادة للتعلم. المحسن الناضج لا يدعي العصمة؛ بل يوضح ما افترضه وما اختاره وما حدث.

المصادر