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

# format_schema_* 포맷 설정

> format_schema_*로 생성된 그룹의 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>;
};

이 설정은 [소스](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h)에서 자동으로 생성되었습니다.

<div id="format_schema">
  ## format\_schema
</div>

이 매개변수는 [Cap'n Proto](https://capnproto.org/) 또는 [Protobuf](https://developers.google.com/protocol-buffers/)처럼 스키마 정의가 필요한 포맷을 사용할 때 유용합니다. 값은 포맷에 따라 달라집니다.

<div id="format_schema_message_name">
  ## format\_schema\_message\_name
</div>

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

`format_schema`에 정의된 스키마에서 필요한 메시지 이름을 지정합니다.
기존 `format_schema` 포맷(`file_name:message_name`)과의 호환성을 유지하기 위해 다음과 같이 동작합니다.

* `format_schema_message_name`을 지정하지 않으면, 메시지 이름은 기존 `format_schema` 값의 `message_name` 부분에서 추론됩니다.
* 기존 포맷을 사용하는 상태에서 `format_schema_message_name`을 지정하면 오류가 발생합니다.

<div id="format_schema_source">
  ## format\_schema\_source
</div>

<SettingsInfoBlock type="String" default_value="file" />

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

`format_schema`의 소스를 정의합니다.
가능한 값:

* 'file' (기본값): `format_schema`는 `format_schemas` 디렉터리에 있는 스키마 파일의 이름입니다.
* 'string': `format_schema`는 스키마의 리터럴 내용입니다.
* 'query': `format_schema`는 스키마를 가져오기 위한 쿼리입니다.
  `format_schema_source`가 'query'로 설정되면 다음 조건이 적용됩니다:
* 쿼리는 정확히 하나의 값을 반환해야 합니다. 즉, 하나의 String 컬럼만 있는 단일 행이어야 합니다.
* 쿼리 결과는 스키마 내용으로 처리됩니다.
* 이 결과는 `format_schemas` 디렉터리에 로컬로 캐시됩니다.
* 다음 명령으로 로컬 캐시를 비울 수 있습니다: `SYSTEM DROP FORMAT SCHEMA CACHE FOR Files`.
* 한 번 캐시되면 캐시가 명시적으로 삭제될 때까지 동일한 쿼리는 스키마를 다시 가져오기 위해 실행되지 않습니다.
* 로컬 캐시 파일 외에도 Protobuf Message는 메모리에 캐시됩니다. 로컬 캐시 파일을 삭제한 후에도 스키마를 완전히 갱신하려면 `SYSTEM DROP FORMAT SCHEMA CACHE [FOR Protobuf]`를 사용해 인메모리 캐시를 비워야 합니다.
* `SYSTEM DROP FORMAT SCHEMA CACHE` 쿼리를 실행하면 캐시 파일과 Protobuf Message 스키마의 캐시를 모두 한 번에 비울 수 있습니다.
