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

# Источник словаря Executable Pool

> Настройка Executable Pool как источника словаря в ClickHouse.

Executable pool позволяет загружать данные из пула процессов.
Этот источник не работает со структурами словарей, для которых требуется загружать все данные из источника.

Executable pool работает, если словарь [хранится](/ru/reference/statements/create/dictionary/layouts/overview#storing-dictionaries-in-memory) с использованием одной из следующих структур:

* `cache`
* `complex_key_cache`
* `ssd_cache`
* `complex_key_ssd_cache`
* `direct`
* `complex_key_direct`

Executable pool запускает пул процессов с указанной командой и оставляет их запущенными, пока они не завершатся. Программа должна читать данные из STDIN, пока они доступны, и выводить результат в STDOUT. Она может ожидать следующий блок данных в STDIN. ClickHouse не закрывает STDIN после обработки блока данных, а при необходимости передает следующий фрагмент данных. Исполняемый скрипт должен быть готов к такому способу обработки данных — он должен опрашивать STDIN и заранее сбрасывать данные в STDOUT.

Пример настроек:

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(EXECUTABLE_POOL(
        command 'while read key; do printf "$key\tData for key $key\n"; done'
        format 'TabSeparated'
        pool_size 10
        max_command_execution_time 10
        implicit_key false
    ))
    ```
  </Tab>

  <Tab title="Файл конфигурации">
    ```xml theme={null}
    <source>
        <executable_pool>
            <command><command>while read key; do printf "$key\tData for key $key\n"; done</command</command>
            <format>TabSeparated</format>
            <pool_size>10</pool_size>
            <max_command_execution_time>10<max_command_execution_time>
            <implicit_key>false</implicit_key>
        </executable_pool>
    </source>
    ```
  </Tab>
</Tabs>

Поля настроек:

| Настройка                     | Описание                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `command`                     | Абсолютный путь к исполняемому файлу или имя файла (если каталог программы указан в `PATH`).                                                                                                                                                                                                                                                                                                                             |
| `format`                      | Формат файла. Поддерживаются все форматы, описанные в разделе [Форматы](/ru/reference/formats).                                                                                                                                                                                                                                                                                                                          |
| `pool_size`                   | Размер пула. Если для `pool_size` указано `0`, размер пула не ограничивается. Значение по умолчанию — `16`.                                                                                                                                                                                                                                                                                                              |
| `command_termination_timeout` | Исполняемый скрипт должен содержать основной цикл с возможностью чтения и записи. После уничтожения словаря канал закрывается, и у исполняемого файла будет `command_termination_timeout` секунд на завершение работы, прежде чем ClickHouse отправит дочернему процессу сигнал SIGTERM. Указывается в секундах. Значение по умолчанию — `10`. Необязательно.                                                            |
| `max_command_execution_time`  | Максимальное время выполнения команды исполняемого скрипта для обработки блока данных. Указывается в секундах. Значение по умолчанию — `10`. Необязательно.                                                                                                                                                                                                                                                              |
| `command_read_timeout`        | Тайм-аут чтения данных из stdout команды в миллисекундах. Значение по умолчанию — `10000`. Необязательно.                                                                                                                                                                                                                                                                                                                |
| `command_write_timeout`       | Тайм-аут записи данных в stdin команды в миллисекундах. Значение по умолчанию — `10000`. Необязательно.                                                                                                                                                                                                                                                                                                                  |
| `implicit_key`                | Исполняемый файл источника может возвращать только значения, а соответствие запрошенным ключам определяется неявно по порядку строк в результате. Значение по умолчанию — `false`. Необязательно.                                                                                                                                                                                                                        |
| `execute_direct`              | Если `execute_direct` = `1`, то `command` будет искаться в папке user\_scripts, указанной параметром [user\_scripts\_path](/ru/reference/settings/server-settings/settings#user_scripts_path). Дополнительные аргументы скрипта можно указать через пробел. Пример: `script_name arg1 arg2`. Если `execute_direct` = `0`, `command` передается как аргумент для `bin/sh -c`. Значение по умолчанию — `1`. Необязательно. |
| `send_chunk_header`           | Управляет тем, нужно ли отправлять количество строк перед отправкой фрагмента данных процессу. Значение по умолчанию — `false`. Необязательно.                                                                                                                                                                                                                                                                           |

Этот источник словаря можно настроить только через XML-конфигурацию. Создание словарей с executable source через DDL отключено, иначе пользователь БД смог бы выполнять произвольный бинарный файл на узле ClickHouse.
