Мутации на лету
SELECT автоматически возвращают измененные значения. Когда мутации на лету отключены, чтобы увидеть измененные значения, может потребоваться дождаться, пока мутации будут применены в фоновом режиме.
Мутации на лету можно включить для таблиц семейства MergeTree, активировав настройку уровня запроса apply_mutations_on_fly.
Пример
SELECT:
SELECT сразу возвращает правильный результат, без необходимости ждать применения мутаций:
Влияние на производительность
SELECT-запросов. Однако обратите внимание: мутации по-прежнему материализуются асинхронно в фоновом режиме, и это ресурсоемкий процесс.
Если число отправленных мутаций в течение некоторого интервала времени постоянно превышает число мутаций, обрабатываемых в фоновом режиме, очередь нематериализованных мутаций, которые нужно применить, будет продолжать расти. Это со временем приведет к снижению производительности SELECT-запросов.
Мы рекомендуем включать настройку apply_mutations_on_fly вместе с другими настройками уровня MergeTree, такими как number_of_mutations_to_throw и number_of_mutations_to_delay, чтобы предотвратить бесконтрольный рост числа нематериализованных мутаций.
Поддержка подзапросов и недетерминированных функций
mutations_max_literal_size_to_replace). Поддерживаются только константные недетерминированные функции (например, функция now()).
Это поведение регулируется следующими настройками:
mutations_execute_nondeterministic_on_initiator- еслиtrue, недетерминированные функции выполняются на реплике-инициаторе и подставляются как литералы в запросыUPDATEиDELETE. Значение по умолчанию:false.mutations_execute_subqueries_on_initiator- еслиtrue, скалярные подзапросы выполняются на реплике-инициаторе и подставляются как литералы в запросыUPDATEиDELETE. Значение по умолчанию:false.mutations_max_literal_size_to_replace- максимальный размер сериализованных литералов в байтах, подставляемых в запросыUPDATEиDELETE. Значение по умолчанию:16384(16 KiB).