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

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

> إعدادات الجلسة في ClickHouse ضمن المجموعة المُولَّدة columns_cache_*.

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>ميزة Beta</span>
        </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).

<h2 id="columns_cache_max_bytes_to_write_to_cache">
  columns\_cache\_max\_bytes\_to\_write\_to\_cache
</h2>

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "0"},{"label": "إعداد جديد: عتبة مرنة لكل استعلام لعدد البايتات المكتوبة في ذاكرة التخزين المؤقت للأعمدة؛ وهي استرشادية، وقد تُتجاوز بمقدار ما يصل إلى العناصر التي يكتبها قارئ واحد في دفعة واحدة (0 = نصف الحد الحالي لحجم ذاكرة التخزين المؤقت للأعمدة، والذي يتقلص عند حدوث ضغط على الذاكرة)."}]}]} />

عتبة مرنة لكل استعلام لعدد البايتات التي يكتبها استعلام واحد في ذاكرة التخزين المؤقت للأعمدة. تُحتسب البايتات المكتوبة أثناء تنفيذ الاستعلام، وبمجرد أن يبلغ العدّاد هذه القيمة، تُتخطّى أي عمليات كتابة لاحقة في ذاكرة التخزين المؤقت طوال ما تبقى من الاستعلام. وهذه عتبة استرشادية وليست حدًا صارمًا: إذ يجمع القارئ عناصر الحبيبات التي قرأها ثم يكتبها في ذاكرة التخزين المؤقت دفعةً واحدة، وتُخزَّن الدفعة التي تتخطى العتبة كاملةً قبل أن تُحتسب في العدّاد. لذا قد تتجاوز الكمية المكتوبة فعليًا هذه القيمة بمقدار ما يصل إلى العناصر التي يجمعها قارئ واحد بين عمليتي كتابة - أي الأعمدة التي يقرؤها، بواقع إدخال واحد لكل شريحة تضم نحو 65536 صفًا - وعند تشغيل عدة قرّاء في آنٍ واحد، يتضاعف هذا المقدار بعدد القرّاء. والغرض من هذا الإعداد هو منع عملية فحص كبيرة واحدة من إزاحة البيانات المفيدة من ذاكرة التخزين المؤقت، لا ضبط استخدام ذاكرة التخزين المؤقت بدقة.

تعني القيمة `0` استخدام نصف الحد الحالي لحجم ذاكرة التخزين المؤقت للأعمدة: أي قيمة `columns_cache_size` المُهيّأة، أو أقل منها عندما تتقلص ذاكرة التخزين المؤقت بسبب الضغط على الذاكرة (راجع المقياس `ColumnsCacheSizeLimit`).

<h2 id="columns_cache_max_estimated_bytes_to_write_to_cache">
  columns\_cache\_max\_estimated\_bytes\_to\_write\_to\_cache
</h2>

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "0"},{"label": "إعداد جديد: حدّ أقصى للبايتات غير المضغوطة المقدَّرة التي يقرؤها الاستعلام للسماح بالكتابة في ذاكرة التخزين المؤقت للأعمدة (0 = نصف حدّ الحجم الحالي لذاكرة التخزين المؤقت للأعمدة، والذي يتقلّص عند الضغط على الذاكرة)."}]}]} />

إذا تجاوز الحجم المقدَّر للبيانات التي يقرؤها الاستعلام من أجزاء بيانات `MergeTree` هذه القيمة، تُمنع الكتابة في ذاكرة التخزين المؤقت للأعمدة طوال الاستعلام. يُحسب التقدير بالبايتات غير المضغوطة، وهي الوحدة التي تُحتسب بها سعة ذاكرة التخزين المؤقت، استنادًا إلى حجم الأعمدة التي يقرؤها الاستعلام (بما فيها أعمدة `PREWHERE` وأعمدة التعديل وأعمدة أجزاء التصحيح) بعد تناسبه مع نطاقات العلامات المحدَّدة، ويُحتسب هذا الحجم كاملًا على الاستعلام قبل أن يبدأ القراءة. ويحول ذلك دون أن تُزيح عملية فحص كبيرة واحدة البيانات المفيدة من ذاكرة التخزين المؤقت، أو أن تنسخ إليها بيانات لا يمكن أن تبقى فيها.

تعني القيمة `0` استخدام نصف حدّ الحجم الحالي لذاكرة التخزين المؤقت للأعمدة. ويساوي هذا الحدّ القيمة المهيّأة في `columns_cache_size` ما دام لدى الخادم فائض من الذاكرة، لكن ذاكرة التخزين المؤقت تتقلّص عند الضغط على الذاكرة (راجع المقياس `ColumnsCacheSizeLimit`)، فتتقلّص الميزانية الافتراضية تبعًا لها. ومع القيمة الافتراضية لـ `columns_cache_size_ratio`، يساوي نصفُ الحدّ حجمَ المقطع التجريبي من ذاكرة التخزين المؤقت، وبذلك يمكن تخزين بيانات الاستعلام الذي يجتاز هذه البوابة تخزينًا مؤقتًا كاملًا في مرور واحد.

لا تنطبق هذه البوابة على عملية القراءة التي تستبعد نطاقات علامات أثناء تنفيذها، كما هي الحال عند تفعيل `use_indexes_refiner_in_read_pools`: إذ لا يتحدّد عدد العلامات المحدَّدة التي تصل إليها هذه القراءة فعليًا إلا عند تقسيم كل مهمة، ومن ثَمّ يصبح التقدير المذكور أعلاه حدًّا أعلى يحتسب علامات لا يقرؤها الاستعلام أبدًا. أما في هذه القراءات، فيُقيَّد مقدار البيانات المكتوبة بالإعداد `columns_cache_max_bytes_to_write_to_cache` بدلًا من ذلك.
