Типы структур словаря
| Структура | Описание |
|---|---|
| flat | Хранит данные в плоских массивах с индексацией по ключу. Самая быстрая структура, но ключи должны иметь тип UInt64 и быть ограничены max_array_size. |
| hashed | Хранит данные в хеш-таблице. Ограничений на размер ключа нет, поддерживается любое количество элементов. |
| sparse_hashed | Как hashed, но в обмен на меньшее использование памяти требует больше CPU. |
| complex_key_hashed | Как hashed, но для составных ключей. |
| complex_key_sparse_hashed | Как sparse_hashed, но для составных ключей. |
| hashed_array | Атрибуты хранятся в массивах, а хеш-таблица сопоставляет ключи с индексами массивов. Эффективно использует память при большом количестве атрибутов. |
| complex_key_hashed_array | Как hashed_array, но для составных ключей. |
| range_hashed | Хеш-таблица с упорядоченными диапазонами. Поддерживает поиск по ключу и диапазону даты/времени. |
| complex_key_range_hashed | Как range_hashed, но для составных ключей. |
| cache | Кэш фиксированного размера в памяти. Хранятся только часто используемые ключи. |
| complex_key_cache | Как cache, но для составных ключей. |
| ssd_cache | Как cache, но хранит данные на SSD и использует индекс в памяти. |
| complex_key_ssd_cache | Как ssd_cache, но для составных ключей. |
| direct | Без хранения в памяти — для каждого запроса обращается напрямую к источнику. |
| complex_key_direct | Как direct, но для составных ключей. |
| ip_trie | Структура префиксного дерева для быстрого поиска по IP-префиксам (на основе CIDR). |
Укажите структуру словаря
LAYOUT (для DDL) или параметра layout в определениях файла конфигурации.
- DDL
- Файл конфигурации
См. также CREATE DICTIONARY для полного синтаксиса DDL. Словари, в структуре которых нет слова
complex-key*, имеют ключ типа UInt64, а словари complex-key* — составной ключ (сложный, с произвольными типами).
Пример числового ключа (столбец key_column имеет тип UInt64):
- DDL
- Файл конфигурации
Пример составного ключа (ключ содержит один элемент типа String):
- DDL
- Файл конфигурации
Как повысить производительность словаря
- Вызывайте функцию для работы со словарём после
GROUP BY. - Помечайте извлекаемые атрибуты как инъективные.
Атрибут называется инъективным, если разным ключам соответствуют разные значения атрибута.
Поэтому, если в
GROUP BYиспользуется функция, которая получает значение атрибута по ключу, эта функция автоматически выносится изGROUP BY.
- Не удалось загрузить словарь, к которому выполняется обращение.
- Ошибка при выполнении запроса к словарю
cached.