> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

> إعدادات جلسة ClickHouse في المجموعة المُنشأة materialized_views_*.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["الإصدار", "القيمة الافتراضية", "التعليق"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        سجل الإصدارات
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>النوع</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>القيمة الافتراضية</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          يمكن تغييره دون إعادة التشغيل
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

تتوفر هذه الإعدادات في [system.settings](/ar/reference/system-tables/settings)، وهي مُولَّدة تلقائيًا من [المصدر](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="materialized_views_ignore_errors">
  ## materialized\_views\_ignore\_errors
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

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

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

<div id="materialized_views_populate_atomically">
  ## materialized\_views\_populate\_atomically
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "إعداد جديد يجعل `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`)، لأن التعبئة الفاشلة لا يمكن التراجع عنها بصورة متسقة على جميع النسخ المتماثلة هناك.

<div id="materialized_views_squash_parallel_inserts">
  ## materialized\_views\_squash\_parallel\_inserts
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "أُضيف هذا الإعداد للحفاظ على السلوك القديم عند الحاجة."}]}]} />

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