> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ClickHouse Cloud의 딕셔너리에서 데이터가 보이지 않는 이유는 무엇입니까?

> 딕셔너리를 생성한 직후에는 데이터가 바로 보이지 않을 수 있습니다.

<div id="dictionaries-in-clickhouse">
  ## ClickHouse의 딕셔너리
</div>

ClickHouse Cloud에서 생성된 딕셔너리는 초기 생성 단계에서 일시적으로 일관성이 보장되지 않을 수 있습니다. 즉, 생성 직후에는 딕셔너리에 데이터가 보이지 않을 수 있습니다. 하지만 여러 차례 재시도하면 생성 쿼리가 다른 레플리카에 전달될 수 있으며, 그러면 데이터가 표시됩니다.

이는 `part`가 server에 도달하기 전에 딕셔너리가 생성되어 발생하는 경우가 있기 때문입니다. 예시는 다음과 같습니다:

```
2024-01-25 13:38:25.615837 - CREATE DICTIONARY received
2024-01-25 13:38:25.626468 - CREATE DICTIONARY finished
2024-01-25 13:38:25.733008 - Part all_0_0_0 downloaded
```

보시다시피 딕셔너리가 생성된 후에야 part가 도착했습니다. `LIFETIME(MIN 0 MAX 0)`을 사용하는 경우 이는 더 큰 문제가 될 수 있는데, 이 설정은 딕셔너리가 자동으로 갱신되지 않음을 의미하기 때문입니다. 따라서 `RELOAD DICTIONARIES` 명령을 실행하기 전까지 딕셔너리는 비어 있는 상태로 유지됩니다.

이 문제를 해결하려면 딕셔너리를 생성할 때 원본 테이블을 지정하는 대신 `SELECT` 쿼리를 사용하고, `select_sequential_consistency=1` 설정을 활성화해야 합니다.

원본 테이블을 지정하는 대신:

```sql theme={null}
SOURCE(CLICKHOUSE(
    table 'test.temp_title_table_1706189903924'
    user default password 'PASSWORD'))
```

`select_sequential_consistency=1`을 설정한 `SELECT` 쿼리를 사용하십시오:

```sql theme={null}
SOURCE(CLICKHOUSE(QUERY
    'SELECT songTitle, mappedTitle
    FROM test.temp_title_table_1706189903924
    SETTINGS select_sequential_consistency=1' USER default PASSWORD ''))
```

<div id="why-does-this-issue-occur">
  ## 왜 이 문제가 발생하나요?
</div>

데이터를 삽입한 후 딕셔너리를 생성하거나 다시 로드하면, DDL이 데이터(또는 새 데이터)보다 먼저 레플리카에 도달할 수 있습니다. 그러면 레플리카 간 딕셔너리 상태가 일치하지 않게 됩니다. 이후 어느 레플리카가 쿼리를 받는지에 따라 결과가 달라질 수 있습니다.

테이블에 데이터를 삽입한 직후 읽는 경우에도 같은 현상이 발생한다는 점에 유의하십시오. 아직 데이터가 복제되지 않은 레플리카에서 읽으면 새로 삽입된 데이터를 볼 수 없습니다. 성능 저하를 감수하더라도 순차 일관성이 필요하다면(이 때문에 일반적으로는 사용이 권장되지 않음) `select_sequential_consistency`를 활성화할 수 있습니다.

딕셔너리의 경우에는 조금 더 까다롭습니다. 딕셔너리는 쿼리 설정이 아니라 서버 설정을 사용하기 때문입니다. 따라서 딕셔너리에 데이터를 로드할 때 `SET select_sequential_consistency=1`을 사용하더라도, 데이터가 레플리카 간에 일관되지 않게 로드될 수 있습니다. 딕셔너리 소스 쿼리에 `select_sequential_consistency=1`을 지정하면, 서버 설정으로 전역 활성화되어 있지 않더라도 딕셔너리가 이 설정을 따르도록 할 수 있습니다.
