Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

إعدادات الجلسة لـ materialized_views_*

تتوفر هذه الإعدادات في system.settings، وهي مُولَّدة تلقائيًا من المصدر.

materialized_views_ignore_errors

النوع
Bool
القيمة الافتراضية
0

إذا كان هذا الإعداد مُمكّنًا، فإن الاستثناءات التي يتم طرحها أثناء تمرير البيانات إلى عرض مُجسَّد تابع (في SELECT الخاص به أو في وجهة الجدول الداخلي) تُسجَّل على أنها تحذير، وتنجح عبارة INSERT. وإذا كان معطّلًا (وهو الافتراضي)، فإن هذا الاستثناء يُمرَّر وتفشل عبارة INSERT.

يتحكّم هذا الإعداد في الإبلاغ عن الأخطاء فقط. فهو لا يتسبب في التراجع عن الكتابة إلى الجدول المصدر، ولا يضمن ما إذا كانت الكتلة الأصلية قد تم تثبيتها بالفعل في الجدول المصدر عند حدوث خطأ في مسار معالجة العرض التابع. وعندما يكون معطّلًا (الافتراضي)، تفشل INSERT عند حدوث خطأ في العرض — أعد المحاولة باستخدام إزالة تكرار الإدراج (insert_deduplicate, deduplicate_blocks_in_dependent_materialized_views) لتحقيق تسليم exactly-once إلى الجدول المصدر وجميع العروض التابعة. وعندما يكون مُمكّنًا، تُبلِغ INSERT عن النجاح رغم التسليم الجزئي إلى العروض التي فشلت والسلاسل اللاحقة التابعة لها؛ استخدم هذا فقط عندما يجب ألّا تتعطل عمليات الكتابة إلى الجدول المصدر بسبب مشكلات في جهة العرض (على سبيل المثال، جداول system.*_log). راجع وثائق CREATE VIEW للاطلاع على الدلالات الكاملة.

materialized_views_populate_atomically

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
26.81إعداد جديد يجعل `CREATE MATERIALIZED VIEW ... POPULATE` ذريًا محليًا: تُلتقط لقطة للبيانات الحالية ويُربط العرض بعمليات الإدراج الجديدة معًا، ضمن قفل حصري قصير على المصدر، بحيث لا تُفوَّت الصفوف المُدرجة عبر الخادم نفسه ولا تتكرر. يشمل الضمان مسار الإدراج المحلي فقط — أما عمليات الإدراج الواردة إلى نسخة متماثلة أخرى أو عبر مسار كتابة موزع فهي خارج نطاقه — ويتطلب مصدرًا قادرًا على توفير لقطة مثبّتة (عائلة `MergeTree` و`Memory`)؛ أما المصادر الأخرى، وكذلك `CREATE OR REPLACE` / `REPLACE`، فتظل تستخدم التعبئة القديمة غير الذرية. اضبطه على `false` لاستخدام السلوك القديم غير الذري في جميع الحالات.

اجعل CREATE MATERIALIZED VIEW ... POPULATE ذريًا: يُربط العرض بعمليات الإدراج الجديدة في الجدول المصدر وتُؤخذ لقطة من البيانات الحالية معًا، ضمن قفل حصري قصير على الجدول المصدر، بحيث يُسلَّم كل صف يُدرج بالتزامن مع التعبئة إلى العرض مرة واحدة بالضبط، دون تفويت أو تكرار. بعد ذلك، تقرأ التعبئة، التي قد تستغرق وقتًا طويلًا، اللقطة المثبّتة من دون الاحتفاظ بأي قفل.

هذه ذرية لمسار الإدراج المحلي: لا يتسلسل القفل الحصري إلا مع عمليات الإدراج التي تحصل على قفل تخزين هذا الجدول المصدر على الخادم نفسه، لذا يغطي ضمان المرة الواحدة بالضبط عمليات الإدراج الواردة عبر هذا الخادم. وليس هذا ضمانًا على مستوى الكتلة؛ فقد تُفوَّت الصفوف المُدرجة بالتزامن مع التعبئة أو تتكرر إذا أُدرجت على نسخة متماثلة أخرى من مصدر ReplicatedMergeTree، أو عبر مسار كتابة موزع، مثل جدول Distributed أو عبر ON CLUSTER.

يتطلب ذلك أن يدعم الجدول المصدر قراءة لقطة مثبّتة في نقطة زمنية محددة (عائلة MergeTree وMemory). بالنسبة إلى أي مصدر آخر (عرض أو Distributed أو Merge أو عائلة Log أو جدول ليس ضمن قاعدة بيانات Atomic)، تعود التعبئة إلى السلوك القديم غير الذري (المسجل في سجل الخادم): تُقرأ البيانات الحالية باستخدام لقطة منفصلة غير منسقة، لذا قد تُفوَّت الصفوف المُدرجة أثناء التعبئة أو تتكرر. اضبط هذا الإعداد على false لفرض السلوك القديم على جميع المصادر. ينطبق ذلك على CREATE MATERIALIZED VIEW العادي فقط؛ إذ يستخدم CREATE OR REPLACE / REPLACE دائمًا التعبئة القديمة غير الذرية، وكذلك العرض المنشأ في قاعدة بيانات Replicated (حيث يتطلب POPULATE الإعداد database_replicated_allow_heavy_create)، لأن التعبئة الفاشلة لا يمكن التراجع عنها بصورة متسقة على جميع النسخ المتماثلة هناك.

materialized_views_squash_parallel_inserts

النوع
Bool
القيمة الافتراضية
1
سجل الإصدارات
الإصدارالقيمة الافتراضيةالتعليق
25.101أُضيف هذا الإعداد للحفاظ على السلوك القديم عند الحاجة.

ادمج عمليات الإدخال المتوازية الناتجة عن استعلام INSERT واحد في الجدول الوجهة للعروض المُجسَّدة لتقليل عدد الأجزاء التي يتم إنشاؤها. إذا ضُبط هذا الإعداد على false وكان parallel_view_processing مفعّلًا، فسينشئ استعلام INSERT جزءًا في الجدول الوجهة لكل max_insert_thread.

Navigation