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

# force_* 세션 설정

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

export const CloudOnlyBadge = () => {
  return <div className="cloudBadge">
            <div className="cloudIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'ClickHouse Cloud 전용'}
        </div>;
};

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)에서 확인할 수 있으며, [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)를 기반으로 자동 생성됩니다.

<div id="force_aggregate_partitions_independently">
  ## force\_aggregate\_partitions\_independently
</div>

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

최적화를 적용할 수 있지만 휴리스틱에 따라 사용하지 않도록 결정된 경우에도, 해당 최적화를 강제로 사용합니다

<div id="force_aggregation_in_order">
  ## force\_aggregation\_in\_order
</div>

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

이 설정은 서버 자체에서 분산 쿼리를 지원하기 위해 사용됩니다. 정상 동작에 문제가 발생할 수 있으므로 수동으로 변경하지 마십시오. (분산 집계 중 원격 노드에서 aggregation in order를 강제로 사용합니다).

<div id="force_creating_set_partitions_independently">
  ## force\_creating\_set\_partitions\_independently
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "파티션 편향 검사로 건너뛰는 경우에도 `IN (subquery)` Set을 빌드할 때 파티션별 사전 중복 제거를 강제하는 새로운 설정입니다."}]}]} />

`IN (subquery)` Set 빌드에 적용 가능하지만 파티션 편향 검사(가장 큰 파티션이 평균의 2배를 초과하는 경우)에서 사용하지 않기로 결정한 경우에도 파티션별 사전 중복 제거를 강제합니다. [allow\_creating\_set\_partitions\_independently](/ko/reference/settings/session-settings/allow#allow_creating_set_partitions_independently)의 편향 검사만 우회하며, 나머지 조건은 계속 적용됩니다.

<div id="force_data_skipping_indices">
  ## force\_data\_skipping\_indices
</div>

지정한 데이터 스키핑 인덱스가 사용되지 않으면 쿼리 실행을 비활성화합니다.

다음 예시를 살펴보십시오:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    d1 Int,
    d1_null Nullable(Int),
    INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
    INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- query will produce CANNOT_PARSE_TEXT error.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- query will produce INDEX_NOT_USED error.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ok.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ok (example of full featured parser).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- query will produce INDEX_NOT_USED error, since d1_null_idx is not used.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ok.
```

<div id="force_distinct_partitions_independently">
  ## force\_distinct\_partitions\_independently
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "비용 휴리스틱이 건너뛰더라도 파티션별 `DISTINCT` 평가를 독립적으로 강제하는 새로운 설정입니다."}]}]} />

적용 가능하지만 비용 휴리스틱이 사용하지 않기로 결정한 경우, 파티션별로 `DISTINCT`를 독립적으로 평가하도록 강제합니다. [allow\_distinct\_partitions\_independently](/ko/reference/settings/session-settings/allow#allow_distinct_partitions_independently)의 비용 휴리스틱만 우회하며, 나머지 조건은 계속 적용됩니다.

<div id="force_grouping_standard_compatibility">
  ## force\_grouping\_standard\_compatibility
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.9"},{"label": "1"},{"label": "GROUPING 함수의 출력이 SQL 표준 및 다른 DBMS와 동일해지도록 합니다"}]}]} />

인수가 집계 키로 사용되지 않으면 GROUPING 함수가 1을 반환합니다

<div id="force_index_by_date">
  ## force\_index\_by\_date
</div>

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

날짜 기준으로 인덱스를 사용할 수 없으면 쿼리 실행을 비활성화합니다.

MergeTree 엔진 계열의 테이블에서 작동합니다.

`force_index_by_date=1`이면 ClickHouse는 쿼리에 데이터 범위를 제한하는 데 사용할 수 있는 날짜 키 조건이 있는지 확인합니다. 적절한 조건이 없으면 예외를 발생시킵니다. 다만, 해당 조건이 읽어야 하는 데이터 양을 실제로 줄이는지는 확인하지 않습니다. 예를 들어 `Date != ' 2000-01-01 '` 조건은 테이블의 모든 데이터와 일치하더라도 허용됩니다(즉, 쿼리를 실행하려면 전체 스캔이 필요합니다). MergeTree 테이블의 데이터 범위에 대한 자세한 내용은 [MergeTree](/ko/reference/engines/table-engines/mergetree-family/mergetree)를 참조하십시오.

<div id="force_primary_key">
  ## force\_primary\_key
</div>

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

프라이머리 키 인덱싱을 사용할 수 없으면 쿼리 실행을 비활성화합니다.

MergeTree 엔진 계열의 테이블에서 작동합니다.

`force_primary_key=1`이면 ClickHouse는 쿼리에 데이터 범위를 제한하는 데 사용할 수 있는 프라이머리 키 조건이 있는지 확인합니다. 적절한 조건이 없으면 예외를 발생시킵니다. 다만, 해당 조건이 읽어야 하는 데이터 양을 실제로 줄이는지는 확인하지 않습니다. MergeTree 테이블의 데이터 범위에 대한 자세한 내용은 [MergeTree](/ko/reference/engines/table-engines/mergetree-family/mergetree)를 참조하십시오.

<div id="force_read_through_distributed_cache">
  ## force\_read\_through\_distributed\_cache
</div>

<CloudOnlyBadge />

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "auto"},{"label": "단일 쿼리에서 서버 설정 `enable_read_through_distributed_cache`를 재정의하는 새로운 설정입니다."}]}, {"id": "row-2","items": [{"label": "26.8"},{"label": "auto"},{"label": "단일 쿼리에서 서버 설정 `enable_read_through_distributed_cache`를 재정의하는 새로운 설정입니다."}]}]} />

ClickHouse Cloud에서만 적용됩니다. 단일 쿼리에서 서버 설정 `enable_read_through_distributed_cache`를 재정의합니다. 기본값인 `auto`는 서버 설정을 따릅니다.

<div id="force_remove_data_recursively_on_drop">
  ## force\_remove\_data\_recursively\_on\_drop
</div>

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

DROP 쿼리 시 데이터를 재귀적으로 삭제합니다. '디렉터리가 비어 있지 않음' 오류를 방지하지만, 분리된 데이터가 자동으로 삭제될 수 있습니다.

<div id="force_window_partitions_independently">
  ## force\_window\_partitions\_independently
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "비용 휴리스틱이 건너뛰는 경우에도 윈도우 함수를 파티션별로 독립적으로 평가하도록 강제하는 새로운 설정입니다."}]}]} />

적용 가능하지만 비용 휴리스틱이 사용하지 않기로 결정한 경우에도 윈도우 함수를 파티션별로 독립적으로 평가하도록 강제합니다. [allow\_window\_partitions\_independently](/ko/reference/settings/session-settings/allow#allow_window_partitions_independently)의 비용 휴리스틱만 우회하며, 나머지 조건은 계속 적용됩니다.

<div id="force_write_through_distributed_cache">
  ## force\_write\_through\_distributed\_cache
</div>

<CloudOnlyBadge />

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "auto"},{"label": "단일 쿼리의 서버 설정 `enable_write_through_distributed_cache`를 재정의하는 새로운 설정."}]}, {"id": "row-2","items": [{"label": "26.8"},{"label": "auto"},{"label": "단일 쿼리의 서버 설정 `enable_write_through_distributed_cache`를 재정의하는 새로운 설정."}]}]} />

ClickHouse Cloud에서만 적용됩니다. 단일 쿼리에 대해 서버 설정 `enable_write_through_distributed_cache`를 재정의합니다. 기본값인 `auto`는 서버 설정을 따릅니다.
