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

# iceberg_* 세션 설정

> iceberg_*로 생성된 그룹의 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)를 바탕으로 자동 생성됩니다.

## iceberg\_delete\_data\_on\_drop

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "새로운 설정"}]}]} />

drop할 때 모든 Iceberg 파일을 삭제할지 여부입니다.

## iceberg\_file\_entries\_queue\_size

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "기존에 하드코딩되어 있던 Iceberg 데이터 매니페스트 디코드 작업과 쿼리 사이 큐 용량에 대한 새로운 설정."}]}]} />

Iceberg 데이터 매니페스트 디코드 작업과 쿼리 사이 큐의 용량이며, 단위는 데이터 파일 항목 수입니다.

큐가 가득 찬 상태에서 쿼리가 데이터를 소비하지 않으면 디코드 작업이 일시 중지되므로, 이 값은 미리 읽기(read-ahead) 양의 상한 역할도 합니다.

0보다 커야 합니다.

## iceberg\_manifest\_decode\_concurrency

**Aliases**: `iceberg_delete_manifest_decode_concurrency`

<SettingsInfoBlock type="NonZeroUInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "4"},{"label": "delete manifest과 데이터 매니페스트 모두에 대해 동시에 디코딩되는 Iceberg manifest 파일 수를 제한하는 새로운 설정입니다. `iceberg_delete_manifest_decode_concurrency`를 대체하며, 기존 이름은 alias로 유지됩니다. `2`는 26.9 이전의 data path 동작과 거의 같습니다. 당시에는 다음 manifest의 fetch가 in-flight 상태인 채로 한 번에 하나의 manifest만 디코딩했습니다. 따라서 `compatibility`가 26.8 이하이면 delete 디코딩도 릴리스 기본값인 4가 아니라 2로 실행되며, delete 디코딩의 중첩을 일부 포기하는 대신 이전 data path의 메모리 엔벌로프를 그대로 유지합니다."}]}]} />

테이블을 읽는 동안 동시에 디코딩되는 Iceberg manifest 파일의 최대 개수입니다.

delete manifest는 데이터 파일을 읽기 전에 모두 디코딩됩니다. 데이터 매니페스트는 쿼리 대상 데이터 파일 목록이 생성되는 동안 디코딩되며, 쿼리가 이미 디코딩된 entry를 소비하는 만큼만 새로운 manifest가 디코딩됩니다. 여러 manifest를 동시에 디코딩하면 객체 스토리지 round-trip과 entry 단위 프루닝 작업이 서로 겹쳐 처리됩니다.

Iceberg metadata 파일 캐시가 비활성화되어 있거나 가득 찬 경우, 값을 높이면 최대 메모리 사용량이 증가합니다. in-flight 상태인 각 manifest가 저마다 디코딩된 내용을 보유하기 때문입니다.

0보다 커야 하며, `1`로 설정하면 manifest를 한 번에 하나씩 디코딩합니다.

## iceberg\_manifest\_min\_count\_to\_compact

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "Iceberg 테이블 속성 `commit.manifest.min-count-to-merge`의 문서화된 기본값(100)에 맞춤, https:\/\/iceberg.apache.org\/docs\/1.5.2\/configuration\/ 참조."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "30"},{"label": "Iceberg 테이블의 매니페스트 compaction을 제어하는 새로운 설정."}]}]} />

OPTIMIZE TABLE ... MANIFEST를 통해 매니페스트만 compaction하는 작업을 트리거하는 데 필요한 매니페스트 파일의 최소 개수입니다.
현재 매니페스트 파일 수가 이 임계값보다 작거나 같으면 compaction을 건너뜁니다.
allow\_experimental\_iceberg\_compaction이 활성화되어 있어야 합니다.

기본값은 Iceberg 테이블 속성 `commit.manifest.min-count-to-merge`의 문서화된 기본값(100)을 따릅니다.
[https://iceberg.apache.org/docs/1.5.2/configuration/](https://iceberg.apache.org/docs/1.5.2/configuration/) 를 참조하십시오.

## iceberg\_max\_number\_datafiles\_to\_compact

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "새로운 설정"}]}]} />

Iceberg의 compaction 데이터 파일 수에 대한 임계값입니다.

## iceberg\_orphan\_files\_older\_than\_seconds

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "259200"},{"label": "기본 고아 파일 경과 시간 임계값에 대한 새로운 설정"}]}]} />

Iceberg 테이블에서 고아 파일 제거에 사용하는 기본 경과 시간 임계값(초)입니다. 이 값보다 최근 파일은 고아 파일로 간주되지 않습니다. remove\_orphan\_files() 프로시저 호출에서 older\_than 인수를 생략한 경우 사용됩니다. 기본값은 259200(3일)입니다.

## iceberg\_snapshot\_id

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "새 설정입니다."}]}]} />

특정 스냅샷 ID를 사용해 Iceberg 테이블을 쿼리합니다.

## iceberg\_timestamp\_ms

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "새 설정입니다."}]}]} />

특정 타임스탬프 시점에 유효한 스냅샷을 사용해 Iceberg 테이블을 쿼리합니다.

## iceberg\_tolerate\_conflicting\_manifest\_schemas

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "1"},{"label": "새로운 설정: Iceberg 매니페스트 파일 헤더에 metadata.json에서 동일한 schema-id로 등록된 스키마와 충돌하는 스키마가 있으면, 다른 쿼리 엔진의 동작과 마찬가지로 쿼리를 실패시키는 대신 metadata.json의 스키마를 우선 사용하고 경고를 기록합니다. `compatibility`가 26.10 미만이면 이전의 엄격한 동작으로 돌아갑니다."}]}]} />

활성화하면 Iceberg 매니페스트 파일 헤더의 `schema` 키에 metadata.json에서 동일한 schema-id로 이미 등록된 스키마와 다른 스키마가 있을 경우 metadata.json의 스키마를 사용하고, 매니페스트 헤더의 사본은 경고와 함께 무시합니다. 비활성화하면 이러한 충돌로 인해 ICEBERG\_SPECIFICATION\_VIOLATION 오류와 함께 쿼리가 실패합니다.

매니페스트 헤더 스키마는 매니페스트가 기록된 시점의 테이블 스키마 사본일 뿐이며, 일부 작성기(예: AWS S3 Tables 유지 관리 작업)가 저하된 사본을 여기에 저장하는 사례가 관찰되었습니다. 다른 쿼리 엔진은 metadata.json에서 스키마를 확인하고 서로 다른 헤더 사본은 무시하므로 기본값도 이를 따릅니다. metadata.json 스키마 정의 두 개 간의 충돌은 여전히 항상 쿼리를 실패시킵니다.
