محتويات الدورة

قاعدة بيانات أوراكل / المتوسط: SQL التطبيقات والأدلة / الدرس 11

الفهارس والإحصاءات وأدلة الخطط

اربط مسارات الوصول بالشروط الانتقائية وشخّص أخطاء التقدير قبل اقتراح فهرس.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • حلّل الفهارس المركبة والمبنية على دوال.
  • ميّز الخطط المقدّرة من أدلة مؤشر منفذ.

يتبادل الفهرس عمل القراءة مع الصيانة

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

رتّب المفاتيح وفق شرط ملموس

لاستعلامات العميل المتكررة بنطاق وقت حجز وترتيب معرّف ثابت، يبدأ المرشح بـcustomer_id ثم booked_at. قد تفيد إضافة shipment_id في التعادل، بحسب الأعمدة والخطة. المثال اقتراح لا تغيير منفذ أو ضمان. لا يعادل فهرس (customer_id, booked_at) فهرسين مستقلين. وقد لا تستفيد شروط العمود الثاني وحده من وصول نطاق فعال كما هو متوقع. يمكن أن تختار أوراكل استراتيجيات أخرى، فلا تختزل كل السلوك بشعار مبسّط عن البادئة اليسرى.

sql مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
CREATE INDEX ix_shipments_customer_time
ON shipments (customer_id, booked_at, shipment_id);

SELECT shipment_id, booked_at FROM shipments
WHERE customer_id = :customer_id
  AND booked_at >= :from_time AND booked_at < :to_time
ORDER BY booked_at, shipment_id;

مسار مرشح لحمل مختبري مراجع. الإنشاء DDL ولا يُنفّذ كتشخيص عابر على خدمة قائمة.

يجب أن يطابق تعبير الشرط التصميم

قد يمنع تطبيق UPPER على tracking_code فهرساً عادياً من تقديم بحث التعبير المقصود. يمكن لفهرس دالي على UPPER(tracking_code) خدمة بحث موحّد الحالة عندما تكون هذه قاعدة العمل الصحيحة. لكنه يضيف صيانة ويحتاج دلالات تعبير متسقة. لا تطبق الأحرف الكبيرة على معرّفات لحالتها معنى. تحذف فهارس B-tree العادية المدخلات التي تكون كل أعمدة مفتاحها NULL، ما يهم في بحث IS NULL؛ يحتاج إضافة مفتاح غير NULL أو تصميم بديل إلى مبرر حمل محدد لا وصفة عامة.

تنتشر أخطاء العدد عبر الربط

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

صرّح بما تثبته الخطة فعلاً

يسجل EXPLAIN PLAN خطة مقدرة ولا ينفذ الاستعلام، وقد تختلف عن بيئة المؤشر الفعلي. تستطيع DBMS_XPLAN عرض الخطط وإحصاءات تنفيذ المؤشر إذا جُمعت وفُوضت بصورة مناسبة. يقرأ المثال خطة مشروحة موجودة ولا يختلق صفوفاً مقاسة. قبل استخدام AWR أو ASH أو مستشاري الضبط راجع استحقاقات الإصدار والحزم للعرض المحدد. توفر القائمة أو الحزمة ليس تفويضاً باستعمال ميزة مرخصة منفصلة. حافظ على الحدود عند تقديم نصائح الأداء.

sql مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
SELECT plan_table_output
FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, NULL, 'BASIC +PREDICATE'));

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

الأخطاء الشائعة وإصلاحها

لا يحسّن الفهرس المضاف التقرير

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

تختلف الصفوف المقدرة كثيراً عن المرصودة

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

تُعرض لقطة خطة كقياس لزمن التنفيذ

لماذا يحدث؟
اختلطت خطة مقدرة بقياسات مؤشر منفذ.
كيف تصلحه؟
سمِّ مصدر كل خطة وادعاء توقيت وحدوده.
كيف تتجنب تكراره؟
استخدم تجربة مصرحاً بها قابلة للإعادة قبل ادعاء التحسن.

اختبر فهمك

1. هل ينبغي أن يستخدم استعلام يعيد تسعين بالمئة من الشحنات فهرساً دائماً؟

اعرض الحل المشروح

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

2. ماذا تثبت EXPLAIN PLAN سليمة عن استعلام إنتاج يستغرق عشر ثوانٍ؟

اعرض الحل المشروح

توفر استراتيجية وصول مقدرة في بيئة الشرح لا سبب الثواني العشر. قد يختلف المؤشر الفعلي وتسهم الانتظارات أو المعلمات أو جلب العميل. استخدم مسار أدلة التشغيل المعتمد وتحقق من الترخيص قبل أدوات التشخيص المرتبطة بالحزم.

أهم ما تعلمته

  • يفيد مسار الوصول بالنسبة إلى حمل ملموس فقط.
  • يجب تمييز الأدلة المقدرة والمقاسة بوضوح.

المراجع الرسمية