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

# Почему я не вижу данные в словаре в ClickHouse Cloud?

> Иногда данные в словарях отображаются не сразу после создания.

{frontMatter.description}

<div id="dictionaries-in-clickhouse">
  ## Словари в ClickHouse
</div>

Словари, созданные в ClickHouse Cloud, на начальном этапе создания могут временно работать несогласованно. Это означает, что сразу после создания вы можете не увидеть в словаре никаких данных. Однако после нескольких попыток запрос на создание может попасть на другие реплики, и данные станут видимыми.

Иногда это происходит потому, что словарь был создан до того, как часть попала на сервер. Например:

```
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
```

Как видите, часть появилась только после создания словаря. Это может быть ещё более серьёзной проблемой, если вы используете `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` с `select_sequential_consistency=1`:

```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` в запросе источника словаря, словарь будет учитывать эту настройку, даже если она не включена глобально как настройка сервера.
