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

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

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

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

## webassembly\_udf\_input\_split\_memory\_ratio

<ExperimentalBadge />

<SettingsInfoBlock type="Float" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0.5"},{"label": "إعداد جديد يتحكم في نسبة الذاكرة الخطية لمثيل WebAssembly UDF التي يمكن أن يشغلها الإدخال المُسلسَل لاستدعاء واحد، ويتيح أيضًا تقسيم هذا الإدخال ديناميكيًا وفقًا لحجمه المُسلسَل؛ يؤدي ضبط `compatibility` على إصدار أقل من 26.9 إلى تعيينه إلى 0 واستعادة السلوك السابق، حيث كان `webassembly_udf_max_input_block_size = 0` يعني استدعاءً واحدًا لكل كتلة في خط المعالجة."}]}]} />

نسبة الذاكرة الخطية لمثيل WebAssembly UDF التي يمكن أن يشغلها الإدخال المُسلسَل لاستدعاء واحد. يجب ألا تقل عن 0 وألا تزيد على 1؛ تترك القيمة الافتراضية النصف الآخر للبيئة الضيفة لاستخدامه كمجموعة عمل خاصة بها إلى جانب مخزن الإدخال المؤقت.

الهامش المتبقي دون 1 هو ما يجعل التجميع في دفعات آمنًا: إذ تشترك بيانات البيئة الضيفة ومكدسها والمخصّص الخاص بها في تلك الذاكرة، وهي غير مرئية للمضيف. لا تترك نسبة قريبة من 1 شيئًا لها، لذا قد يفشل استدعاء بحجم محسوب بناءً عليها داخل مخصّص البيئة الضيفة.

للقراءة فقط مع `ABI BUFFERED_V1`، ويحدد حجم الاستدعاءات فقط عندما تكون قيمة `webassembly_udf_max_input_block_size` تساوي 0؛ أما حجم الكتلة غير الصفري فيحدّ من عدد الصفوف لكل استدعاء بدلًا من ذلك.

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

اضبط القيمة على 0 لترك الإدخال دون تقسيم: تُمرَّر كتلة خط المعالجة كاملةً في استدعاء واحد.

## webassembly\_udf\_max\_fuel

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "إعداد جديد لتقييد عدد تعليمات CPU (fuel) لكل عملية تنفيذ لمثيل WebAssembly UDF."}]}]} />

حدّ الوقود لكل عملية تنفيذ لمثيل WebAssembly UDF. تستهلك كل تعليمة في WebAssembly مقدارًا من الوقود. تُوسَّع القيمة بمعامل 1024 قبل تمريرها إلى بيئة التشغيل، لذا فإن `webassembly_udf_max_fuel = 1` يعادل تقريبًا 1024 وحدة وقود. اضبطها على 0 لإلغاء أي حدّ finite. لا ينطبق هذا إلا على الدوال التي تكون فيها القيمة `webassembly_udf_enable_fuel` الخاصة بكل دالة مضبوطة على true، وهو الإعداد الافتراضي.

## webassembly\_udf\_max\_input\_block\_size

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "إعداد جديد لتقييد حجم block الإدخال لدوال WebAssembly UDF."}]}]} />

الحد الأقصى لعدد الصفوف التي تُمرَّر إلى دالة WebAssembly UDF في استدعاء واحد. القيمة غير الصفرية تحدّ من عدد الصفوف في كل استدعاء وتنطبق على كل ABI.

اضبط القيمة على 0 لتحديد حجم الاستدعاءات بحسب إدخالها المُسلسل بدلاً من ذلك. وينطبق ذلك على `ABI BUFFERED_V1` وحده، وهو ABI الوحيد الذي يُسلسل block إدخال كاملاً إلى ذاكرة البيئة الضيفة: إذ تُقسَّم الـ blocks الخاصة به بحيث يبقى إدخال الاستدعاء ضمن حدود `webassembly_udf_input_split_memory_ratio` من الذاكرة الخطية للوحدة. أما `ROW_DIRECT` فيمرّر وسائطه كقيم WebAssembly، و`ASSEMBLYSCRIPT` فيبني object واحداً لكل صف، لذا ليس لدى أيٍّ منهما إدخال مُسلسل يُحدَّد حجم الاستدعاء بحسبه، والقيمة 0 تُبقي كتلة خط المعالجة لديهما كاملة.

## webassembly\_udf\_max\_instances

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "إعداد جديد لتحديد عدد مثيلات WebAssembly UDF التي يمكن تشغيلها بالتوازي لكل دالة."}]}]} />

الحد الأقصى لعدد مثيلات WebAssembly UDF التي يمكن تشغيلها بالتوازي لكل دالة.

## webassembly\_udf\_max\_memory

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "إعداد جديد للحد من الذاكرة لكل مثيل WebAssembly UDF."}]}]} />

حد الذاكرة بالبايت لكل مثيل WebAssembly UDF.
