Перейти к основному содержанию

Типы структур словаря

Словари можно хранить в памяти разными способами, и каждый из них предполагает компромисс между использованием CPU и оперативной памяти.
Рекомендуемые структурыflat, hashed и complex_key_hashed обеспечивают лучшую производительность запросов. Структуры с кэшированием не рекомендуются из-за потенциально низкой производительности и сложности подбора параметров — подробнее см. в разделе cache.

Укажите структуру словаря

Если вы используете словарь в ClickHouse Cloud, для создания словарей используйте вариант с DDL-запросом, а сам словарь создавайте от имени пользователя default. Также проверьте список поддерживаемых источников для словарей в руководстве по совместимости с Cloud.
Вы можете настроить структуру словаря с помощью конструкции LAYOUT (для DDL) или параметра layout в определениях файла конфигурации.

См. также CREATE DICTIONARY для полного синтаксиса DDL. Словари, в структуре которых нет слова complex-key*, имеют ключ типа UInt64, а словари complex-key* — составной ключ (сложный, с произвольными типами). Пример числового ключа (столбец key_column имеет тип UInt64):

Пример составного ключа (ключ содержит один элемент типа String):

Как повысить производительность словаря

Есть несколько способов повысить производительность словаря:
  • Вызывайте функцию для работы со словарём после GROUP BY.
  • Помечайте извлекаемые атрибуты как инъективные. Атрибут называется инъективным, если разным ключам соответствуют разные значения атрибута. Поэтому, если в GROUP BY используется функция, которая получает значение атрибута по ключу, эта функция автоматически выносится из GROUP BY.
ClickHouse генерирует исключение при ошибках, связанных со словарями. Примеры таких ошибок:
  • Не удалось загрузить словарь, к которому выполняется обращение.
  • Ошибка при выполнении запроса к словарю cached.
Вы можете просмотреть список словарей и их статусы в таблице system.dictionaries.
Последнее изменение 2 июля 2026 г.