ملاحظاتLakehouseApache IcebergAutonomous AI DatabaseSQL tuning

تقليم أقسام Iceberg في Autonomous AI Database: ضع الشرط على عمود المصدر

يقلّم Autonomous AI Database الآن أقسام Apache Iceberg في الجداول الخارجية، فيتخطى الملفات التي لا تطابق الاستعلام. بلا صياغة جديدة؛ ضع الشرط على عمود المصدر.

ملصق بالإنجليزية: تخطَّ الملفات التي لا يمكن أن يطابقها استعلامك. الشرط WHERE customer_id = 202 يُطابق bucket(4, customer_id) = 1، فلا تُقرأ إلا ملفات الدلو 1. مثال توضيحي. harby.dev

حتى الآن كان الاستعلام على جدول خارجي كبير من نوع Apache Iceberg قد يقرأ ملفات بيانات لا فرصة لها في مطابقة الشرط. تحديث أوراكل لـ Autonomous AI Database في أكتوبر 2026 يغيّر ذلك: تقرأ قاعدة البيانات أولًا البيانات الوصفية للأقسام في ملفات manifest الخاصة بـ Iceberg، ثم تتخطى ملفات البيانات التي لا يمكن أن تحتوي صفًا مطابقًا.

ما يجب معرفته

  • لا حاجة إلى تفعيل أي شيء ولا إلى صياغة جديدة. تستمر في الاستعلام من الجدول الخارجي الذي أنشأته بـ DBMS_CLOUD.CREATE_EXTERNAL_TABLE.
  • يعمل تقليم الأقسام (partition pruning) عندما يحمل الاستعلام شرطًا مدعومًا على العمود الذي يُقسَّم الجدول على أساسه، أي عمود المصدر في Iceberg. فأنت تصفّي على customer_id، لا على رقم الدلو (bucket).
  • في مثال أوراكل، الجدول orders مقسّم وفق bucket(4, customer_id). والشرط WHERE customer_id = 202 يقع في الدلو 1، فلا تُقرأ إلا ملفات الدلو 1.
  • الشرط الذي لا يصل إلى الجدول إلا عبر ربط (join) قد لا يؤدي إلى التقليم.
-- Can prune: supported filter on the partition source column
SELECT * FROM orders WHERE customer_id = 202;

-- May not prune: the value only reaches orders through the join
SELECT o.*
FROM   orders o JOIN customers c ON c.customer_id = o.customer_id
WHERE  c.customer_id = 202;

-- Same rows, plus a direct filter on o.customer_id (can prune)
SELECT o.*
FROM   orders o JOIN customers c ON c.customer_id = o.customer_id
WHERE  c.customer_id = 202
AND    o.customer_id = 202;

قيود ما زالت قائمة

تفشل الاستعلامات إذا أشارت بيانات Iceberg الوصفية للجدول إلى ملفات حذف (delete files) بنمط merge-on-read. وعندما يتغير مخطط Iceberg يجب إعادة إنشاء الجدول الخارجي.

جرّبه على جدول واحد أولًا

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

رأيي: التقليم تلقائي، لكنه يقتصر على الاستعلامات التي يقع شرطها على عمود المصدر للأقسام. ابدأ بفحص استعلامات الربط (join). المصادر: Query Apache Iceberg Tables وWhat's New for Autonomous AI Database Serverless.

اشترك في نشرة أوراكل والذكاء الاصطناعي

رسالة واحدة عند نشر دليل مُختبر أو قالب جديد أو ملاحظات إصدار APEX — بالعربية أو الإنجليزية. دون إزعاج، ويمكنك إلغاء الاشتراك متى شئت.