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

# إعدادات جلسة read_in_*

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

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="read_in_order_two_level_merge_threshold">
  ## read\_in\_order\_two\_level\_merge\_threshold
</div>

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

الحد الأدنى لعدد الأجزاء التي يجب قراءتها لتشغيل خطوة دمج أوّلي أثناء القراءة متعددة الخيوط بترتيب المفتاح الأساسي.

<div id="read_in_order_use_buffering">
  ## read\_in\_order\_use\_buffering
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "استخدام التخزين المؤقت قبل الدمج عند القراءة وفق ترتيب المفتاح الأساسي"}]}]} />

استخدم التخزين المؤقت قبل الدمج عند القراءة وفق ترتيب المفتاح الأساسي. يزيد ذلك من التوازي في تنفيذ الاستعلام

<div id="read_in_order_use_virtual_row">
  ## read\_in\_order\_use\_virtual\_row
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "فعّل تحسين الصف الافتراضي افتراضيًا. عند القراءة وفق ترتيب المفتاح الأساسي عبر أجزاء كثيرة، يتيح لـ `MergingSortedTransform` إعادة تحديد أولوية المصادر باستخدام قيم المفتاح الأساسي من الفهرس المتناثر، بحيث لا تُقرأ الأجزاء غير ذات الصلة بالاستعلام، إلى جانب نافذة قراءة مسبقة محدودة لا تتجاوز `max_threads` جزءًا تحافظ على توازي عمليات القراءة. يقلل ذلك بدرجة كبيرة من ذروة استهلاك الذاكرة (انظر https:\/\/github.com\/ClickHouse\/ClickHouse\/issues\/52624)."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "استخدم الصف الافتراضي أثناء القراءة وفق ترتيب المفتاح الأساسي أو دالته الرتيبة. يفيد ذلك عند البحث عبر عدة أجزاء، إذ لا تُفحَص إلا الأجزاء ذات الصلة."}]}]} />

استخدم الصف الافتراضي أثناء القراءة وفق ترتيب المفتاح الأساسي أو دالته الرتيبة. يفيد ذلك عند البحث عبر عدة أجزاء، إذ لا تُقرأ إلا الأجزاء التي يمكن أن تسهم فعليًا في النتيجة، إلى جانب نافذة قراءة مسبقة محدودة لا تتجاوز `max_threads` جزءًا تحافظ على توازي عمليات القراءة.

<div id="read_in_order_use_virtual_row_per_block">
  ## read\_in\_order\_use\_virtual\_row\_per\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "إصدار صف افتراضي بعد كل كتلة أثناء القراءة بالترتيب للسماح بإعادة تحديد أولوية المصادر بوتيرة أعلى في MergingSortedTransform."}]}]} />

عند تمكينه مع `read_in_order_use_virtual_row`، يُصدر صفًا افتراضيًا بعد كل كتلة تتم قراءتها (وليس فقط في بداية كل جزء).
ويتيح ذلك لـ `MergingSortedTransform` إعادة تحديد أولوية المصادر بوتيرة أكثر تكرارًا، وهو ما يفيد عندما تستبعد عوامل التصفية اللاحقة عددًا كبيرًا من الصفوف وتكون البيانات موزعة بشكل غير متساوٍ عبر الأجزاء.
لاحظ أن هذا يعطّل تحسين `read_in_order_use_buffering` والدمج الأوّلي (`read_in_order_two_level_merge_threshold`) أثناء القراءة.
