> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            ميزة تجريبية
        </a>;
};

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).

## iceberg\_delete\_data\_on\_drop

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "إعداد جديد"}]}]} />

تحديد ما إذا كان سيتم حذف جميع ملفات Iceberg عند تنفيذ عملية الحذف أم لا.

## iceberg\_file\_entries\_queue\_size

<SettingsInfoBlock type="NonZeroUInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "إعداد جديد للسعة التي كانت مثبّتة سابقًا في الشيفرة للطابور الواقع بين مهام فك ترميز manifest بيانات Iceberg والاستعلام."}]}]} />

سعة الطابور الواقع بين مهام فك ترميز manifest بيانات Iceberg والاستعلام، مُقدَّرة بعدد مُدخلات ملف البيانات.

تتوقف مهام فك الترميز مؤقتًا عند امتلاء الطابور وتوقّف الاستعلام عن استهلاك البيانات، ومن ثمّ فإن هذا يحدّ أيضًا من القراءة المسبقة.

يجب أن تكون القيمة أكبر من الصفر.

## iceberg\_manifest\_decode\_concurrency

**الأسماء البديلة**: `iceberg_delete_manifest_decode_concurrency`

<SettingsInfoBlock type="NonZeroUInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "4"},{"label": "إعداد جديد يحدّد عدد ملفات manifest الخاصة بـ Iceberg التي يجري فك ترميزها بالتوازي، سواء أكانت manifests حذف أم بيانات. وهو يحل محل `iceberg_delete_manifest_decode_concurrency` (المحتفظ به كاسم بديل). تقارب القيمة `2` مسار البيانات السابق للإصدار 26.9، الذي كان يفك ترميز manifest واحد في كل مرة بينما يكون جلب التالي قيد الإرسال بالفعل؛ وفي ظل `compatibility` عند 26.8 أو أقل، يعمل فك ترميز الحذف أيضًا عند 2 بدلًا من قيمته الافتراضية المُصدَرة 4، مما يحافظ على غلاف ذاكرة مسار البيانات الأقدم مقابل بعض التداخل في فك ترميز الحذف."}]}]} />

الحد الأقصى لعدد ملفات manifest الخاصة بـ Iceberg التي يجري فك ترميزها بالتوازي أثناء قراءة جدول.

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

ترفع القيم الأعلى ذروة الذاكرة عندما تكون ذاكرة التخزين المؤقت لملفات البيانات الوصفية الخاصة بـ Iceberg معطّلة أو ممتلئة، إذ يحتفظ عندئذٍ كل manifest قيد الإرسال بمحتوياته المفكوكة الخاصة به.

يجب أن تكون القيمة أكبر من صفر؛ فالقيمة `1` تفك ترميز manifests واحدًا تلو الآخر.

## iceberg\_manifest\_min\_count\_to\_compact

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "مُوائَم مع القيمة الافتراضية الموثّقة لخاصية جدول Iceberg ‏`commit.manifest.min-count-to-merge` (100)، انظر https:\/\/iceberg.apache.org\/docs\/1.5.2\/configuration\/."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "30"},{"label": "إعداد جديد للتحكم في دمج ملفات manifest لجداول Iceberg."}]}]} />

الحد الأدنى لعدد ملفات manifest المطلوب لبدء دمج يقتصر على ملفات manifest عبر OPTIMIZE TABLE ... MANIFEST.
إذا كان العدد الحالي لملفات manifest أقل من هذه العتبة أو مساويًا لها، فسيتم تخطي الدمج.
يتطلب تفعيل allow\_experimental\_iceberg\_compaction.

القيمة الافتراضية تعكس القيمة الافتراضية الموثّقة لخاصية جدول Iceberg ‏`commit.manifest.min-count-to-merge` (100)،
انظر [https://iceberg.apache.org/docs/1.5.2/configuration/](https://iceberg.apache.org/docs/1.5.2/configuration/).

## iceberg\_max\_number\_datafiles\_to\_compact

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "إعداد جديد"}]}]} />

العتبة الخاصة بملفات بيانات الدمج في Iceberg.

## iceberg\_orphan\_files\_older\_than\_seconds

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="259200" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "259200"},{"label": "إعداد جديد لعتبة العمر الافتراضية للملفات اليتيمة"}]}]} />

عتبة العمر الافتراضية، بالثواني، لإزالة الملفات اليتيمة في جداول Iceberg. لا تُعدّ الملفات الأحدث من هذه العتبة ملفات يتيمة. يُستخدم هذا الإعداد عند عدم تمرير الوسيط `older_than` في استدعاء الإجراء `remove_orphan_files()`. القيمة الافتراضية هي 259200 (3 أيام).

## iceberg\_snapshot\_id

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

نفّذ استعلامًا على جدول Iceberg باستخدام معرّف اللقطة المحدّد.

## iceberg\_timestamp\_ms

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "إعداد جديد."}]}]} />

استعلام عن جدول Iceberg باستخدام اللقطة السارية عند طابع زمني محدد.

## iceberg\_tolerate\_conflicting\_manifest\_schemas

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "1"},{"label": "إعداد جديد: عندما تحمل ترويسة ملف manifest في Iceberg مخططًا يتعارض مع المخطط المسجَّل لنفس schema-id المأخوذ من metadata.json، يُعتمد مخطط metadata.json ويُسجَّل تحذير بدلًا من إفشال الاستعلام، بما يطابق سلوك محركات الاستعلام الأخرى. وضبط `compatibility` على إصدار أقل من 26.10 يُعيد السلوك الصارم السابق."}]}]} />

عند التفعيل، إذا كان المفتاح `schema` في ترويسة ملف manifest في Iceberg يحمل مخططًا يختلف عن المخطط المسجَّل مسبقًا لنفس schema-id المأخوذ من metadata.json، فسيُعتمد مخطط metadata.json وتُتجاهَل النسخة الموجودة في ترويسة manifest مع إصدار تحذير. أما عند التعطيل، فيؤدي مثل هذا التعارض إلى إفشال الاستعلام بخطأ ICEBERG\_SPECIFICATION\_VIOLATION.

ليس مخطط ترويسة manifest سوى نسخة من مخطط الجدول وقت كتابة الـ manifest، وقد لوحظ أن بعض أدوات الكتابة (مثل مهام صيانة AWS S3 Tables) تخزّن فيها نسخًا منقوصة. وتستخرج محركات الاستعلام الأخرى المخططات من metadata.json وتتجاهل نسخ الترويسة المخالفة، لذا يسير السلوك الافتراضي على نهجها. أما التعارض بين تعريفَي مخطط داخل metadata.json فيظل دائمًا يؤدي إلى إفشال الاستعلام.
