Типы структур словаря
Словари можно хранить в памяти разными способами, и каждый из них предполагает компромисс между использованием CPU и оперативной памяти.Структуры на основе кэша не подходят для надёжного обогащения данных во время вставки: прогретые записи хранятся локально на каждом сервере и теряются при его перезапуске или замене. В ClickHouse Cloud автомасштабирование и управляемая замена узлов делают такую ситуацию более вероятной. Вместо них используйте структуру с полной загрузкой данных; см. Кэш-словари в конвейере ингестии.
Укажите структуру словаря
Вы можете настроить структуру словаря с помощью конструкции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.