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

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

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

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

<div id="group_by_overflow_mode">
  ## group\_by\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowModeGroupBy" default_value="throw" />

يحدد ما يحدث عندما يتجاوز عدد المفاتيح الفريدة للتجميع الحد المسموح به:

* `throw`: طرح استثناء
* `break`: إيقاف تنفيذ الاستعلام وإرجاع النتيجة الجزئية
* `any`: متابعة التجميع للمفاتيح التي دخلت إلى المجموعة، ولكن من دون إضافة مفاتيح جديدة إليها.

يتيح لك استخدام القيمة 'any' تشغيل تقريب لـ GROUP BY. وتعتمد جودة
هذا التقريب على الطبيعة الإحصائية للبيانات.

<div id="group_by_top_k_optimization_observation_rows">
  ## group\_by\_top\_k\_optimization\_observation\_rows
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "65536"},{"label": "إعداد تجريبي جديد: عدد الصفوف التي يراقبها كل تدفق تجميع قبل اعتبار تجميد كومة top-K ممتلئة لم ترفض أي عناصر عبئًا إضافيًا محضًا."}]}]} />

بالنسبة إلى `enable_group_by_top_k_optimization`: عدد الصفوف التي يراقبها كل تدفق تجميع قبل تجميد كومة top-K ممتلئة تخطّت أقل من 10% من صفوف الإدخال وأخرجت مفاتيح أقل من سعتها. وتعني الكومة المجمّدة أن التجميع يستمر كما لو كان التحسين معطّلًا.

تبلغ النافذة الفعلية ضعفي الحجم المحجوز للكومة على الأقل، لذا تتاح للكومة دائمًا فرصة للامتلاء قبل تقييمها. تعطل القيمة `0` هذا التجميد (مع استمرار تجميد الكومة عندما تتجاوز مجموعة التعادلات عند الحد سعتها).

لا يؤثر هذا في استعلامات `GROUP BY keys LIMIT K` التي لا تتضمن `ORDER BY`، إذ يكون التجميد معطّلًا دائمًا فيها: تتضمن خطة هذا النمط ترتيبًا مُنشأً لا يحقق فائدة إلا ما دامت الكومة تحدّ من حجم جدول التجزئة، لذا فإن تجميد الكومة سيُبقي خطة أبطأ من الخطة غير المحسّنة.

<div id="group_by_two_level_threshold">
  ## group\_by\_two\_level\_threshold
</div>

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

يبدأ التجميع ثنائي المستوى عند هذا العدد من المفاتيح. 0 - العتبة غير معيّنة.

<div id="group_by_two_level_threshold_bytes">
  ## group\_by\_two\_level\_threshold\_bytes
</div>

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

اعتبارًا من أي حجم، بالبايت، لحالة التجميع يبدأ استخدام التجميع ثنائي المستوى. 0 - يعني أن العتبة غير معيّنة. ويُستخدم التجميع ثنائي المستوى عند تفعيل واحدة على الأقل من العتبات.

<div id="group_by_use_nulls">
  ## group\_by\_use\_nulls
</div>

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

يغيّر الطريقة التي يتعامل بها [بند GROUP BY](/ar/reference/statements/select/group-by) مع أنواع مفاتيح التجميع.
عند استخدام المحددات `ROLLUP` أو `CUBE` أو `GROUPING SETS`، قد لا تُستخدم بعض مفاتيح التجميع في إنتاج بعض صفوف النتائج.
تُملأ الأعمدة الخاصة بهذه المفاتيح إما بالقيمة الافتراضية أو بـ `NULL` في الصفوف المقابلة، وذلك وفقًا لهذا الإعداد.

القيم الممكنة:

* 0 — تُستخدم القيمة الافتراضية لنوع مفتاح التجميع لتمثيل القيم المفقودة.
* 1 — ينفّذ ClickHouse ‏`GROUP BY` بالطريقة نفسها التي يحددها معيار SQL. وتُحوَّل أنواع مفاتيح التجميع إلى [Nullable](/ar/reference/data-types/nullable). وتُملأ الأعمدة الخاصة بمفاتيح التجميع المقابلة بقيمة [NULL](/ar/reference/syntax#null) في الصفوف التي لم تُستخدم فيها.

انظر أيضًا:

* [بند GROUP BY](/ar/reference/statements/select/group-by)
