mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 01:22:04 +00:00
Merge pull request #23455 from olgarev/revolg-DOCSUP-8656-FlatDictionary_HashedDictionary_update_field
DOCSUP-8656: Flat dictionary parameters
This commit is contained in:
commit
aebb9f8376
@ -7,9 +7,9 @@ toc_title: Storing Dictionaries in Memory
|
||||
|
||||
There are a variety of ways to store dictionaries in memory.
|
||||
|
||||
We recommend [flat](#flat), [hashed](#dicts-external_dicts_dict_layout-hashed) and [complex_key_hashed](#complex-key-hashed). which provide optimal processing speed.
|
||||
We recommend [flat](#flat), [hashed](#dicts-external_dicts_dict_layout-hashed) and [complex_key_hashed](#complex-key-hashed), which provide optimal processing speed.
|
||||
|
||||
Caching is not recommended because of potentially poor performance and difficulties in selecting optimal parameters. Read more in the section “[cache](#cache)”.
|
||||
Caching is not recommended because of potentially poor performance and difficulties in selecting optimal parameters. Read more in the section [cache](#cache).
|
||||
|
||||
There are several ways to improve dictionary performance:
|
||||
|
||||
@ -68,9 +68,9 @@ LAYOUT(LAYOUT_TYPE(param value)) -- layout settings
|
||||
|
||||
The dictionary is completely stored in memory in the form of flat arrays. How much memory does the dictionary use? The amount is proportional to the size of the largest key (in space used).
|
||||
|
||||
The dictionary key has the `UInt64` type and the value is limited to 500,000. If a larger key is discovered when creating the dictionary, ClickHouse throws an exception and does not create the dictionary.
|
||||
The dictionary key has the [UInt64](../../../sql-reference/data-types/int-uint.md) type and the value is limited to `max_array_size` (by default — 500,000). If a larger key is discovered when creating the dictionary, ClickHouse throws an exception and does not create the dictionary. Dictionary flat arrays initial size is controlled by `initial_array_size` setting (by default — 1024).
|
||||
|
||||
All types of sources are supported. When updating, data (from a file or from a table) is read in its entirety.
|
||||
All types of sources are supported. When updating, data (from a file or from a table) is read in it entirety.
|
||||
|
||||
This method provides the best performance among all available methods of storing the dictionary.
|
||||
|
||||
@ -78,14 +78,17 @@ Configuration example:
|
||||
|
||||
``` xml
|
||||
<layout>
|
||||
<flat />
|
||||
<flat>
|
||||
<initial_array_size>50000</initial_array_size>
|
||||
<max_array_size>5000000</max_array_size>
|
||||
</flat>
|
||||
</layout>
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
``` sql
|
||||
LAYOUT(FLAT())
|
||||
LAYOUT(FLAT(INITIAL_ARRAY_SIZE 50000 MAX_ARRAY_SIZE 5000000))
|
||||
```
|
||||
|
||||
### hashed {#dicts-external_dicts_dict_layout-hashed}
|
||||
|
@ -9,7 +9,7 @@ toc_title: "Хранение словарей в памяти"
|
||||
|
||||
Рекомендуем [flat](#flat), [hashed](#dicts-external_dicts_dict_layout-hashed) и [complex_key_hashed](#complex-key-hashed). Скорость обработки словарей при этом максимальна.
|
||||
|
||||
Размещение с кэшированием не рекомендуется использовать из-за потенциально низкой производительности и сложностей в подборе оптимальных параметров. Читайте об этом подробнее в разделе «[cache](#cache)».
|
||||
Размещение с кэшированием не рекомендуется использовать из-за потенциально низкой производительности и сложностей в подборе оптимальных параметров. Читайте об этом подробнее в разделе [cache](#cache).
|
||||
|
||||
Повысить производительность словарей можно следующими способами:
|
||||
|
||||
@ -48,7 +48,7 @@ LAYOUT(LAYOUT_TYPE(param value)) -- layout settings
|
||||
...
|
||||
```
|
||||
|
||||
## Способы размещения словарей в памяти {#sposoby-razmeshcheniia-slovarei-v-pamiati}
|
||||
## Способы размещения словарей в памяти {#ways-to-store-dictionaries-in-memory}
|
||||
|
||||
- [flat](#flat)
|
||||
- [hashed](#dicts-external_dicts_dict_layout-hashed)
|
||||
@ -65,11 +65,11 @@ LAYOUT(LAYOUT_TYPE(param value)) -- layout settings
|
||||
|
||||
### flat {#flat}
|
||||
|
||||
Словарь полностью хранится в оперативной памяти в виде плоских массивов. Объём памяти, занимаемой словарём пропорционален размеру самого большого по размеру ключа.
|
||||
Словарь полностью хранится в оперативной памяти в виде плоских массивов. Объём памяти, занимаемой словарём, пропорционален размеру самого большого ключа (по объему).
|
||||
|
||||
Ключ словаря имеет тип `UInt64` и его величина ограничена 500 000. Если при создании словаря обнаружен ключ больше, то ClickHouse бросает исключение и не создает словарь.
|
||||
Ключ словаря имеет тип [UInt64](../../../sql-reference/data-types/int-uint.md) и его величина ограничена параметром `max_array_size` (значение по умолчанию — 500 000). Если при создании словаря обнаружен ключ больше, то ClickHouse бросает исключение и не создает словарь. Данные загружаются в словарь блоками по `initial_array_size` записей (значение по умолчанию — 1024). Начальный размер плоских массивов словарей контролируется параметром initial_array_size (по умолчанию - 1024).
|
||||
|
||||
Поддерживаются все виды источников. При обновлении, данные (из файла, из таблицы) читаются целиком.
|
||||
Поддерживаются все виды источников. При обновлении данные (из файла или из таблицы) считываются целиком.
|
||||
|
||||
Это метод обеспечивает максимальную производительность среди всех доступных способов размещения словаря.
|
||||
|
||||
@ -77,21 +77,24 @@ LAYOUT(LAYOUT_TYPE(param value)) -- layout settings
|
||||
|
||||
``` xml
|
||||
<layout>
|
||||
<flat />
|
||||
<flat>
|
||||
<initial_array_size>50000</initial_array_size>
|
||||
<max_array_size>5000000</max_array_size>
|
||||
</flat>
|
||||
</layout>
|
||||
```
|
||||
|
||||
или
|
||||
|
||||
``` sql
|
||||
LAYOUT(FLAT())
|
||||
LAYOUT(FLAT(INITIAL_ARRAY_SIZE 50000 MAX_ARRAY_SIZE 5000000))
|
||||
```
|
||||
|
||||
### hashed {#dicts-external_dicts_dict_layout-hashed}
|
||||
|
||||
Словарь полностью хранится в оперативной памяти в виде хэш-таблиц. Словарь может содержать произвольное количество элементов с произвольными идентификаторами. На практике, количество ключей может достигать десятков миллионов элементов.
|
||||
Словарь полностью хранится в оперативной памяти в виде хэш-таблиц. Словарь может содержать произвольное количество элементов с произвольными идентификаторами. На практике количество ключей может достигать десятков миллионов элементов.
|
||||
|
||||
Поддерживаются все виды источников. При обновлении, данные (из файла, из таблицы) читаются целиком.
|
||||
Поддерживаются все виды источников. При обновлении данные (из файла, из таблицы) читаются целиком.
|
||||
|
||||
Пример конфигурации:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user