> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# use_* 세션 설정

> use_* 생성 그룹의 ClickHouse 세션 설정입니다.

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>;
};

export const ExperimentalBadge = () => {
  return <div 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>
            실험 기능입니다. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">자세히 알아보세요.</a></u>
        </div>;
};

이러한 설정은 [system.settings](/docs/ko/reference/system-tables/settings)에서 확인할 수 있으며, [소스 코드](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)에서 자동 생성됩니다.

<div id="use_async_executor_for_materialized_views">
  ## use\_async\_executor\_for\_materialized\_views
</div>

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

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

materialized view 쿼리를 async 방식으로, 필요에 따라 멀티스레드로 실행합니다. INSERT 중 materialized view 처리 속도를 높일 수 있지만, 메모리를 더 많이 사용할 수도 있습니다.

<div id="use_cache_for_count_from_files">
  ## use\_cache\_for\_count\_from\_files
</div>

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

테이블 함수 `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`에서 파일의 count를 수행할 때 행 수 캐싱을 활성화합니다.

기본적으로 활성화되어 있습니다.

<div id="use_client_time_zone">
  ## use\_client\_time\_zone
</div>

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

서버 시간대를 적용하는 대신, DateTime 문자열 값을 해석할 때 클라이언트 시간대를 사용합니다.

<div id="use_compact_format_in_distributed_parts_names">
  ## use\_compact\_format\_in\_distributed\_parts\_names
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "기본적으로 분산 테이블에 대한 async INSERT에 compact 포맷을 사용"}]}]} />

`Distributed` 엔진 테이블에 대한 백그라운드(`distributed_foreground_insert`) INSERT에서 블록을 저장할 때 compact 포맷을 사용합니다.

가능한 값:

* 0 — `user[:password]@host:port#default_database` 디렉터리 포맷을 사용합니다.
* 1 — `[shard{shard_index}[_replica{replica_index}]]` 디렉터리 포맷을 사용합니다.

<Note>
  - `use_compact_format_in_distributed_parts_names=0`이면 cluster 정의 변경 사항이 백그라운드 INSERT에 적용되지 않습니다.
  - `use_compact_format_in_distributed_parts_names=1`이면 cluster 정의에서 node 순서를 변경할 경우 `shard_index`/`replica_index`도 변경되므로 유의하십시오.
</Note>

<div id="use_concurrency_control">
  ## use\_concurrency\_control
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "기본적으로 동시성 제어를 활성화합니다"}]}]} />

서버의 동시성 제어를 따릅니다(`concurrent_threads_soft_limit_num` 및 `concurrent_threads_soft_limit_ratio_to_cores` 전역 서버 설정 참조). 비활성화하면 서버에 과부하가 걸린 경우에도 더 많은 스레드를 사용할 수 있습니다(일반적인 사용에는 권장되지 않으며, 주로 테스트에 필요합니다).

<div id="use_constant_folding_in_index_analysis">
  ## use\_constant\_folding\_in\_index\_analysis
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "MergeTree 인덱스 분석 중 파트별 필터 프레디케이트에 파티션 수준 상수 폴딩을 적용하여, 분기가 파티션 값에 따라 달라지는 필터의 프루닝을 개선하는 새로운 설정입니다."}]}]} />

파트별 프라이머리 키와 스킵 인덱스를 분석할 때 파티션 수준 상수를 필터 프레디케이트에 대입합니다.

파티션 키가 필터에서 프라이머리 키 또는 스킵 인덱스 컬럼과 함께 사용되면, 인덱스 분석 시 각 파트 내에서 파티션 값을 개별적으로 폴딩할 수 있습니다. 이는 분기가 서로 다른 파티션을 대상으로 하는 논리합 필터에서 특히 유용합니다. 예를 들어, `PARTITION BY a`와 `ORDER BY b`가 있는 경우:

```sql theme={null}
SELECT * FROM t WHERE (a = 1 AND b >= 1) OR (a = 2 AND b > 10) OR (a = 3 AND b > 10)
```

파티션 `a = 1`의 파트에서는 조건이 `b >= 1`로 축약되고, 파티션 `a = 2` 및 `a = 3`에서는 `b > 10`으로 축약되므로, 각 파트는 실제로 적용되는 프레디케이트를 기준으로 분석됩니다.

가능한 값:

* 0 — 비활성화됨.
* 1 — 활성화됨.

<div id="use_hash_table_stats_for_join_reordering">
  ## use\_hash\_table\_stats\_for\_join\_reordering
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "새 설정입니다. 이전에는 'collect_hash_table_stats_during_joins' 설정을 그대로 따랐습니다."}]}]} />

조인 재정렬 시 카디널리티 추정을 위해 수집된 해시 테이블 통계를 사용하도록 설정합니다

<div id="use_hedged_requests">
  ## use\_hedged\_requests
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.9"},{"label": "1"},{"label": "기본적으로 Hedged Requests 기능을 활성화합니다"}]}]} />

원격 쿼리에 대한 hedged requests 로직을 활성화합니다. 이를 통해 하나의 쿼리에 대해 서로 다른 레플리카로 여러 연결을 설정할 수 있습니다.
기존 레플리카 연결이 `hedged_connection_timeout` 내에 설정되지 않거나
`receive_data_timeout` 내에 데이터를 수신하지 못하면 새 연결이 활성화됩니다. 쿼리는 비어 있지 않은 Progress packet(또는 `allow_changing_replica_until_first_data_packet`가 설정된 경우 Data packet)을 먼저 보내는 연결을 사용하고,
다른 연결은 취소됩니다. `max_parallel_replicas > 1`인 쿼리도 지원됩니다.

기본적으로 활성화되어 있습니다.

Cloud 기본값: `0`.

<div id="use_hive_partitioning">
  ## use\_hive\_partitioning
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "이 설정이 기본적으로 활성화되었습니다."}]}, {"id": "row-2","items": [{"label": "24.8"},{"label": "0"},{"label": "File, URL, S3, AzureBlobStorage 및 HDFS 엔진에서 Hive 스타일 파티셔닝을 사용할 수 있습니다."}]}]} />

활성화되면 ClickHouse는 파일 기반 테이블 엔진 [File](/docs/ko/reference/functions/table-functions/file#hive-style-partitioning)/[S3](/docs/ko/reference/functions/table-functions/s3#hive-style-partitioning)/[URL](/docs/ko/reference/functions/table-functions/url#hive-style-partitioning)/[HDFS](/docs/ko/reference/functions/table-functions/hdfs#hive-style-partitioning)/[AzureBlobStorage](/docs/ko/reference/functions/table-functions/azureBlobStorage#hive-style-partitioning)의 경로(`/name=value/`)에서 Hive 스타일 파티셔닝을 감지하고, 쿼리에서 파티션 컬럼을 가상 컬럼으로 사용할 수 있도록 합니다. 이러한 가상 컬럼의 이름은 파티셔닝된 경로의 이름과 같지만, 앞에 `_`가 붙습니다.

<div id="use_join_disjunctions_push_down">
  ## use\_join\_disjunctions\_push\_down
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "이 최적화를 활성화했습니다."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "새 설정입니다."}]}]} />

JOIN 조건에서 OR로 연결된 부분을 해당 입력 측으로 pushdown하는 기능("partial pushdown")을 활성화합니다.
이 기능을 사용하면 저장 엔진이 더 이른 단계에서 필터링할 수 있으므로 읽는 데이터 양을 줄일 수 있습니다.
이 최적화는 쿼리 의미를 그대로 유지하며, 각 최상위 OR 분기가 대상 측에 대해 최소 1개의 결정적(deterministic) 프레디케이트를 제공하는 경우에만 적용됩니다.

<div id="use_legacy_to_time">
  ## use\_legacy\_to\_time
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "기본적으로 기존 `toTime` 대신 새로운 `toTime` 함수를 사용합니다(값을 `Time` 데이터 타입으로 변환하며, 기존 함수는 계속 `toTimeWithFixedDate`로 사용할 수 있습니다)."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "새 설정입니다. `toTimeWithFixedDate`처럼 동작하는 기존 `toTime` 함수 로직을 사용할 수 있도록 합니다."}]}]} />

활성화하면 시간을 유지하면서 시간이 포함된 날짜 값을 특정 고정 날짜로 변환하는 기존 `toTime` 함수를 사용할 수 있습니다.
비활성화하면 다양한 타입의 데이터를 `Time` 타입으로 변환하는 새로운 `toTime` 함수를 사용합니다.
이전 기존 함수는 `toTimeWithFixedDate`로도 언제나 사용할 수 있습니다.

<div id="use_lightweight_primary_key_index_analysis">
  ## use\_lightweight\_primary\_key\_index\_analysis
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "프라이머리 키가 긴 테이블의 프라이머리 키 인덱스 분석을 최적화하는 새로운 설정"}]}]} />

프라이머리 키가 긴 `MergeTree` 테이블의 프라이머리 키 인덱스 분석을 최적화합니다.

활성화하면 인덱스 분석의 실행 시간은 프라이머리 키 길이보다 쿼리 필터의 복잡도(실제로 사용하는 키 컬럼)에 주로 좌우됩니다. 따라서 정렬 키를 확장하더라도 그중 일부 컬럼에만 필터를 적용하는 쿼리의 경우 인덱스 분석에 추가되는 오버헤드는 거의 없습니다.

가능한 값:

* 0 — 비활성화됨. 인덱스 분석 중 모든 프라이머리 키 컬럼이 처리됩니다.
* 1 — 활성화됨.

<div id="use_parquet_metadata_cache">
  ## use\_parquet\_metadata\_cache
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Parquet 파일 메타데이터 캐시를 활성화합니다."}]}]} />

활성화하면 Parquet 포맷에서 Parquet 메타데이터 캐시를 사용할 수 있습니다.

가능한 값:

* 0 - 비활성화
* 1 - 활성화

<div id="use_primary_key">
  ## use\_primary\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "MergeTree가 그래뉼 수준의 프루닝에 프라이머리 키를 사용할지 제어하는 새로운 설정입니다."}]}]} />

MergeTree 테이블의 쿼리 실행 중 그래뉼을 프루닝할 때 프라이머리 키를 사용합니다.

가능한 값:

* 0 — 비활성화됨.
* 1 — 활성화됨.

<div id="use_reader_executor">
  ## use\_reader\_executor
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "읽기 버퍼로 이루어진 기존의 중첩 구조 대신 새로운 파이프라인 `ReaderExecutor`를 통해 읽기를 라우팅하는 새로운 실험적 설정."}]}]} />

실험적 기능입니다. 읽기 버퍼로 이루어진 기존의 중첩 구조 대신 새로운 파이프라인 `ReaderExecutor`를 통해 읽기를 라우팅합니다. 실행기가 아직 지원하지 않는 구성에서는 기존 경로로 대체됩니다.

<div id="use_roaring_bitmap_iceberg_positional_deletes">
  ## use\_roaring\_bitmap\_iceberg\_positional\_deletes
</div>

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

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

Iceberg 위치 기반 삭제에 Roaring 비트맵을 사용합니다.

<div id="use_streaming_marks_compression">
  ## use\_streaming\_marks\_compression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "전체 일반 마크 배열을 먼저 생성하는 대신, 마크를 블록 단위로 하나씩(스트리밍 방식으로) 인메모리 표현으로 압축하는 새로운 설정입니다. 이를 통해 서브스트림이 많은 compact 파트에서 마크를 로딩할 때 최대 메모리 사용량을 줄일 수 있습니다."}]}]} />

MergeTree 파트의 마크를 로딩할 때, 먼저 전체 일반 마크 배열을 생성하는 대신 마크를 블록 단위로 하나씩(스트리밍 방식으로) 인메모리 표현으로 압축합니다. 이렇게 하면 서브스트림이 많은 compact 파트(예: JSON 컬럼이 있는 테이블에서 `write_marks_for_substreams_in_compact_parts`가 활성화된 경우)에서 마크를 로딩하는 동안 최대 메모리 사용량을 크게 줄일 수 있습니다.

<div id="use_strict_insert_block_limits">
  ## use\_strict\_insert\_block\_limits
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "삽입 시 엄격한 최소 및 최대 한계를 사용하기 위한 새로운 설정입니다. min < max이면 max 한계가 우선합니다."}]}]} />

활성화하면 최소 및 최대 삽입 블록 크기 제한을 모두 엄격하게 적용합니다.

다음과 같은 경우 블록이 생성됩니다:

* 최소 임계값(AND): min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes에 모두 도달한 경우입니다.
* 최대 임계값(OR): max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes 중 하나에 도달한 경우입니다.

비활성화하면 다음과 같은 경우 블록이 생성됩니다:

* 최소 임계값(OR): min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes 중 하나에 도달한 경우입니다.

**참고**: max 설정이 min 설정보다 작으면 max 한계가 우선하며, 최소 임계값에 도달하기 전에 블록이 생성됩니다.

**참고**: 이 설정은 async inserts에 대해서는 자동으로 비활성화됩니다. async inserts는 항목별 중복 제거 토큰을 연결하는데, 이는 엄격한 한계 적용에 필요한 블록 분할과 호환되지 않기 때문입니다.

기본적으로 비활성화되어 있습니다.

<div id="use_structure_from_insertion_table_in_table_functions">
  ## use\_structure\_from\_insertion\_table\_in\_table\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.11"},{"label": "2"},{"label": "테이블 함수에서 데이터의 스키마를 추론하는 대신 삽입 테이블의 구조를 사용하도록 개선"}]}]} />

데이터에서 스키마를 추론하는 대신 삽입 테이블의 구조를 사용합니다. 가능한 값: 0 - 비활성화, 1 - 활성화, 2 - 자동

<div id="use_uncompressed_cache">
  ## use\_uncompressed\_cache
</div>

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

압축 해제된 블록의 캐시를 사용할지 여부를 지정합니다. 0 또는 1을 사용할 수 있습니다. 기본값은 0(비활성화)입니다.
압축 해제 캐시( MergeTree 엔진 계열 테이블에만 적용)를 사용하면 짧은 쿼리를 대량으로 처리할 때 지연 시간을 크게 줄이고 처리량을 높일 수 있습니다. 짧은 요청을 자주 보내는 사용자에게는 이 설정을 활성화하세요. 또한 [uncompressed\_cache\_size](/docs/ko/reference/settings/server-settings/settings#uncompressed_cache_size) 구성 매개변수(구성 파일에서만 설정 가능)도 함께 확인하세요. 이 매개변수는 압축 해제 캐시 블록의 크기를 지정합니다. 기본값은 8 GiB입니다. 압축 해제 캐시는 필요할 때 채워지며, 가장 적게 사용된 데이터는 자동으로 삭제됩니다.

비교적 큰 양의 데이터(100만 행 이상)를 읽는 쿼리의 경우, 실제로 작은 쿼리를 위한 공간을 확보하기 위해 압축 해제 캐시가 자동으로 비활성화됩니다. 즉, 'use\_uncompressed\_cache' 설정은 항상 1로 두어도 됩니다.

<div id="use_with_fill_by_sorting_prefix">
  ## use\_with\_fill\_by\_sorting\_prefix
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "ORDER BY 절에서 WITH FILL 컬럼 앞에 오는 컬럼이 정렬 접두사를 이룹니다. 정렬 접두사의 값이 서로 다른 행은 각각 독립적으로 채워집니다"}]}]} />

ORDER BY 절에서 WITH FILL 컬럼 앞에 오는 컬럼이 정렬 접두사를 이룹니다. 정렬 접두사의 값이 서로 다른 행은 각각 독립적으로 채워집니다
