تحسين
ينطبق على: Databricks SQL Databricks Runtime
تحسين تخطيط بيانات Delta Lake. تحسين مجموعة فرعية من البيانات اختياريا أو تجميع البيانات حسب العمود. إذا لم تحدد ترتيبا ولم يتم تعريف الجدول باستخدام التجميع السائل، يتم إجراء تحسين التعبئة.
بناء الجملة
OPTIMIZE table_name [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
إشعار
- يعد تحسين حزم الخانات غير فعال، ما يعني أنه إذا تم تشغيله مرتين على نفس مجموعة البيانات، فلن يكون للتشغيل الثاني أي تأثير. ويهدف إلى إنتاج ملفات بيانات متوازنة بالتساوي فيما يتعلق بحجمها على القرص، ولكن ليس بالضرورة عدد المجموعات لكل ملف. ومع ذلك، غالبا ما يرتبط المقياسان ببعضهما البعض.
- Z-Ordering ليست متكررة ولكنها تهدف إلى أن تكون عملية تزايدية. الوقت الذي يستغرقه Z-Ordering غير مضمون لتقليله عبر عمليات تشغيل متعددة. ومع ذلك، إذا لم تتم إضافة بيانات جديدة إلى قسم كان فقط Z-Ordered، فلن يكون ل Z-Ordering آخر لهذا القسم أي تأثير. ويهدف إلى إنتاج ملفات بيانات متوازنة بالتساوي فيما يتعلق بعدد المجموعات، ولكن ليس بالضرورة حجم البيانات على القرص. غالبا ما يكون المقياسان مرتبطين، ولكن يمكن أن تكون هناك حالات لا يحدث فيها ذلك، مما يؤدي إلى انحراف في أوقات المهام الأمثل.
إشعار
أثناء استخدام Databricks Runtime، للتحكم في حجم ملف الإخراج، قم بتعيين تكوين spark.databricks.delta.optimize.maxFileSize
Spark . القيمة الافتراضية هي 1073741824
، والتي تعين الحجم إلى 1 غيغابايت. يؤدي تحديد القيمة 104857600
إلى تعيين حجم الملف إلى 100 ميغابايت.
المعلمات
-
تعريف جدول Delta موجود. يجب ألا يتضمن الاسم مواصفات زمنية.
WHERE
تحسين المجموعة الفرعية من الصفوف المطابقة لمسند القسم المحدد. يتم دعم عوامل التصفية التي تتضمن سمات مفتاح القسم فقط.
لا يمكنك استخدام هذه العبارة على الجداول التي تستخدم تكوين أنظمة المجموعات السائلة.
ZORDER BY
تجميع معلومات العمود في نفس مجموعة الملفات. تستخدم خوارزميات تخطي بيانات Delta Lake المحلية المشتركة لتقليل كمية البيانات التي تحتاج إلى قراءة بشكل كبير. يمكنك تحديد أعمدة
ZORDER BY
متعددة لقائمة مفصولة بفواصل. ومع ذلك، تقل فعالية المنطقة مع كل عمود إضافي.لا يمكنك استخدام هذه العبارة على الجداول التي تستخدم تكوين أنظمة المجموعات السائلة.
الأمثلة
> OPTIMIZE events;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
لمزيد من المعلومات حول OPTIMIZE
الأمر، راجع تحسين تخطيط ملف البيانات.