> ## 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_* 세션 설정

> webassembly_udf_* 생성 그룹에 속한 ClickHouse 세션 설정입니다.

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](/ko/reference/system-tables/settings)에서 확인할 수 있으며, [소스 코드](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)에서 자동 생성됩니다.

<h2 id="webassembly_udf_input_split_memory_ratio">
  webassembly\_udf\_input\_split\_memory\_ratio
</h2>

<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보다 작은 여유 공간이 배칭의 안전성을 보장합니다. 게스트의 자체 데이터, 스택, allocator는 이 메모리를 함께 사용하며 호스트에서는 보이지 않습니다. 비율이 1에 가까우면 이들을 위한 공간이 남지 않으므로, 이를 기준으로 크기를 정한 호출도 게스트의 allocator 내부에서 실패할 수 있습니다.

`ABI BUFFERED_V1`에서는 읽기 전용이며, `webassembly_udf_max_input_block_size`가 0일 때만 호출 크기를 결정합니다. 0이 아닌 블록 크기가 대신 호출당 행 수를 제한합니다.

배치는 단일 행보다 작아지지 않으므로 자체 직렬화 크기가 예산을 초과하는 행은 단독으로 전달됩니다. 모듈의 선형 메모리에 비해 너무 큰 행은 게스트의 allocator 내부에서 실패합니다.

입력을 분할하지 않으려면 0으로 설정하십시오. 전체 파이프라인 블록이 한 번의 호출로 전달됩니다.

<h2 id="webassembly_udf_max_fuel">
  webassembly\_udf\_max\_fuel
</h2>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "WebAssembly UDF 인스턴스 실행마다 CPU 명령어(연료)를 제한하는 새로운 설정."}]}]} />

WebAssembly UDF 인스턴스 실행마다 적용되는 연료 제한입니다. 각 WebAssembly 명령어는 일정량의 연료를 소비합니다. 이 값은 런타임에 전달되기 전에 1024배로 조정되므로, `webassembly_udf_max_fuel = 1`은 대략 1024 연료 단위에 해당합니다. 유한한 제한을 두지 않으려면 0으로 설정합니다. 기본값이 true인 함수별 설정 `webassembly_udf_enable_fuel`이 true인 함수에만 적용됩니다.

<h2 id="webassembly_udf_max_input_block_size">
  webassembly\_udf\_max\_input\_block\_size
</h2>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "WebAssembly UDF의 입력 block 크기를 제한하기 위한 새로운 설정입니다."}]}]} />

한 번의 호출에서 WebAssembly UDF로 전달되는 최대 행 수입니다. 0이 아닌 값은 호출당 행 수를 제한하며 모든 ABI에 적용됩니다.

대신 직렬화된 입력을 기준으로 호출 크기를 조정하려면 0으로 설정하십시오. 이는 전체 입력 block을 게스트 메모리에 직렬화하는 유일한 ABI인 `ABI BUFFERED_V1`에만 적용됩니다. 이 ABI의 block은 호출 입력이 모듈 선형 메모리의 `webassembly_udf_input_split_memory_ratio` 이내로 유지되도록 분할됩니다. `ROW_DIRECT`는 인수를 WebAssembly 값으로 전달하고 `ASSEMBLYSCRIPT`는 행마다 하나의 객체를 생성하므로, 둘 다 호출 크기를 결정할 직렬화된 입력이 없습니다. 따라서 0으로 설정하면 해당 파이프라인 블록은 그대로 유지됩니다.

<h2 id="webassembly_udf_max_instances">
  webassembly\_udf\_max\_instances
</h2>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "함수당 동시에 실행할 수 있는 WebAssembly UDF 인스턴스 수를 제한하는 새로운 설정입니다."}]}]} />

함수당 동시에 실행할 수 있는 WebAssembly UDF 인스턴스의 최대 수입니다.

<h2 id="webassembly_udf_max_memory">
  webassembly\_udf\_max\_memory
</h2>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "WebAssembly UDF 인스턴스당 메모리를 제한하는 새로운 설정입니다."}]}]} />

WebAssembly UDF 인스턴스별 메모리 한도(바이트)입니다.
