خطوات تنفيذ الخطة
تقوم كل خطوة من خطة التنفيذ بإرجاع مجموعة من الصفوف التي يتم استخدامها إما في الخطوة التالية أو، في الخطوة الأخيرة، يتم إرجاعها إلى المستخدم أو التطبيق الذي أصدر عبارة SQL. تسمى مجموعة الصفوف التي يتم إرجاعها بواسطة كل خطوة بمصدر الصف. الشكل 5-1 يوضح الرسم التخطيطي الشجري تدفق البيانات من مسار إلى آخر. يعكس ترقيم كل خطوة الترتيب الذي تظهر به الخطوات عند عرض خطة التنفيذ (يتم شرح كيفية عرض خطة التنفيذ بإيجاز). بشكل عام، ليس هذا هو الترتيب الذي يتم به تنفيذ كل خطوة. تقوم كل خطوة من خطة التنفيذ إما باسترداد الصفوف من قاعدة البيانات أو تلقي بيانات الصف كمدخلات من مصدر صف واحد أو أكثر:
تقوم الخطوات المشار إليها بالمربعات الحمراء باسترداد البيانات فعليًا من ملفات البيانات الموجودة في قاعدة البيانات. تسمى هذه الخطوة بمسار الوصول، وسيتم تقديم مسارات الوصول التي يمكن استخدامها في أوراكل بالتفصيل لاحقًا:
تقوم الخطوتان 3 و6 بقراءة كافة الصفوف من جدول EMP وجدول SALGRADE على التوالي.
تبحث الخطوة 5 عن كل قيمة DEPTNO التي يتم إرجاعها بواسطة الخطوة 3 في فهرس PK_DEPTNO. يكتشف ROWIDs لتلك الصفوف المرتبطة بجدول DEPT.
تسترد الخطوة 4 من جدول DEPT تلك الصفوف التي تم إرجاع ROWID الخاص بها في الخطوة 5.
تعمل الخطوات التي يشير إليها مربع النص الأسود على مصدر الصف، مثل الاقتران أو الفرز أو التصفية بين جدولين. سيتم تقديم مقدمات تفصيلية لاحقًا:
تنفذ الخطوة 2 عمليات الحلقة المتداخلة (المكافئة للحلقات المتداخلة في عبارات C)، وتستقبل مصادر الصفوف من الخطوتين 3 و4، وتقارن كل صف من المصدر في الخطوة 3 بمصدر الصف الخاص به في الخطوة 4. يتم ربط الصفوف المقابلة معًا و يتم إرجاع الصفوف الناتجة إلى الخطوة 1.
الخطوة 1 تكمل عملية التصفية. فهو يتلقى مصادر الصفوف من الخطوتين 2 و6، ويزيل تلك الصفوف من الخطوة 2 التي تحتوي على صفوف مقابلة في الخطوة 6، ويعيد الصفوف المتبقية من الخطوة 2 إلى المستخدم أو التطبيق.
تنفيذ تسلسل خطوات خطة التنفيذ
لا يتم تنفيذ الخطوات الموجودة في خطة التنفيذ بالترتيب الذي تم ترقيمها: تقوم Oracle أولاً بتنفيذ الخطوات التي تظهر كأوراق في الرسم البياني لبنية الشجرة في الشكل 5-1 (على سبيل المثال، الخطوات 3 و5 و6). تسمى الصفوف التي يتم إرجاعها بواسطة كل خطوة بمصادر الصفوف الخاصة بالخطوة التالية. تقوم Oracle بعد ذلك بتنفيذ الخطوة الأصلية.
على سبيل المثال، لتنفيذ العبارة في الشكل 5-1، تنفذ Oracle هذه الخطوات بالترتيب التالي:
أولاً، تقوم Oracle بتنفيذ الخطوة 3 وإرجاع صفوف النتائج إلى الخطوة 2، صفًا تلو الآخر.
بالنسبة لكل صف تم إرجاعه في الخطوة 3، تنفذ Oracle الخطوات التالية:
- تنفذ Oracle الخطوة 5 وتعيد النتيجة ROWID إلى الخطوة 4.
- تنفذ Oracle الخطوة 4 وتعيد صف النتيجة إلى الخطوة 2.
- تنفذ Oracle الخطوة 2 وستقبل صفًا من الخطوة 3 وصفًا من الخطوة 4 وتعود
أعط الخطوة 1 سطرًا.
- تنفذ Oracle الخطوة 6. إذا كان هناك صف نتيجة، فقم بإعادته إلى الخطوة 1.
- تنفذ Oracle الخطوة 1. إذا تم إرجاع صف من الخطوة 6، تقوم Oracle بإرجاع الصف من الخطوة 2 إلى
المستخدم الذي أصدر عبارة SQL.
لاحظ أن Oracle تنفذ الخطوات 5 و4 و2 و6 مرة واحدة لكل صف يتم إرجاعه بواسطة الخطوة 3. تتطلب العديد من الخطوات الأصلية صفًا واحدًا فقط من الخطوات الفرعية قبل أن تتمكن من تنفيذها. بالنسبة لهذه الخطوة الأصلية، يتم تنفيذ الخطوة الأصلية (وربما بقية خطة التنفيذ) بمجرد إرجاع صف واحد من الخطوة الفرعية. إذا كان من الممكن أيضًا تنشيط الخطوة الأصلية للخطوة الأصلية من خلال إرجاع صف واحد، فسيتم تنفيذها أيضًا. ولذلك، يمكن ربط عمليات الإعدام بالشجرة، وربما تشمل بقية خطة التنفيذ. بالنسبة لمثل هذه العمليات، يمكنك استخدام الصفوف الأولى كهدف للتحسين للاستجابة بسرعة لطلبات المستخدمين.
بالنسبة لكل صف يتم استرداده بدوره بواسطة خطوة فرعية، تقوم Oracle بتنفيذ الخطوة الأصلية وجميع الخطوات المتسلسلة مرة واحدة. تتضمن الخطوات الأصلية التي يتم تشغيلها لكل صف يتم إرجاعه بواسطة خطوة فرعية الوصول إلى الجدول والوصول إلى الفهرس وربط الحلقات المتداخلة وعوامل التصفية.
تتطلب بعض الخطوات الأصلية كافة الصفوف من الخطوات الفرعية قبل أن يتم تنفيذها. بالنسبة لمثل هذه الخطوة الأصلية، لا يمكن لـ Oracle تنفيذ الخطوة الأصلية حتى يتم إرجاع كافة الصفوف من الخطوة الفرعية. تتضمن هذه الخطوات الأصلية الفرز والدمج والانضمام ووظيفة المجموعة والإجمالي. بالنسبة لمثل هذه العملية، لا يمكن استخدام الصفوف الأولى كهدف للتحسين، ولكن يمكن استخدام جميع الصفوف كهدف للتحسين لجعل هذا النوع من العمليات يستهلك أقل قدر من الموارد.
في بعض الأحيان، عند تنفيذ عبارة، لا يتم تنفيذها خطوة بخطوة كما هو مذكور أعلاه، ولكن قد يتم تنفيذها بالتوازي. على سبيل المثال، في بيئة فعلية، قد يتم تشغيل الخطوات 3 و5 و4 بالتوازي لتحقيق كفاءة أفضل. من الصعب رؤية الترتيب الذي يتم به تنفيذ كل عملية من المخطط الشجري أعلاه، ومع ذلك، من خلال نموذج آخر لخطة التنفيذ التي تم إنشاؤها بواسطة ORACLE، من السهل معرفة العملية التي يتم تنفيذها أولاً وأيها يتم تنفيذها لاحقًا بهذه الطريقة خطة التنفيذ هي ما نحتاجه حقًا، وسيتم شرحها بالتفصيل لاحقًا.
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: http://blog.csdn.net/lcyhjx/archive/2009/12/20/5044799.aspx.
-