Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Настройки сеанса insert_*

Эти настройки доступны в system.settings и автоматически сгенерированы на основе исходного кода.

insert_allow_materialized_columns

Тип
Bool
По умолчанию
0

Если параметр включен, разрешается вставка в материализованные столбцы.

insert_deduplicate

Тип
Bool
По умолчанию
1

Включает или отключает дедупликацию блоков при вставке (для таблиц Replicated*).

Этот параметр действует только при значении backward_compatible_choice для deduplicate_insert.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

По умолчанию блоки, вставленные в реплицируемые таблицы оператором вставки, дедуплицируются (см. Репликация данных). Для реплицируемых таблиц по умолчанию дедуплицируются только 100 последних блоков для каждой партиции (см. replicated_deduplication_window, replicated_deduplication_window_seconds). Для нереплицируемых таблиц см. non_replicated_deduplication_window.

insert_deduplication_token

Эта настройка позволяет пользователю задать собственную логику дедупликации в MergeTree/ReplicatedMergeTree. Например, указывая уникальное значение этой настройки в каждом операторе вставки, пользователь может сделать так, чтобы одинаковые вставляемые данные не дедуплицировались.

Возможные значения:

  • Любая строка

insert_deduplication_token используется для дедупликации только если он не пуст.

Для реплицируемых таблиц по умолчанию дедуплицируются только 100 самых последних вставок для каждой партиции (см. replicated_deduplication_window, replicated_deduplication_window_seconds). Для нереплицируемых таблиц см. non_replicated_deduplication_window.

Пример:

CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- the next insert won't be deduplicated because insert_deduplication_token is different
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- the next insert will be deduplicated because insert_deduplication_token
-- is the same as one of the previous
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

insert_null_as_default

Тип
Bool
По умолчанию
1

Включает или отключает вставку значений по умолчанию вместо NULL в столбцы с типом данных, отличным от Nullable. Если тип столбца не Nullable и этот параметр отключён, вставка NULL вызывает исключение. Если тип столбца Nullable, значения NULL вставляются как есть независимо от этого параметра.

Этот параметр применим к запросам вставка … SELECT. Обратите внимание, что подзапросы SELECT могут быть объединены оператором UNION ALL.

Возможные значения:

  • 0 — Вставка NULL в столбец с типом, отличным от Nullable, вызывает исключение.
  • 1 — Вместо NULL вставляется значение столбца по умолчанию.

insert_shard_id

Тип
UInt64
По умолчанию
0

Если значение не равно 0, указывает сегмент таблицы Distributed, в который данные будут вставлены синхронно.

Если значение insert_shard_id некорректно, сервер сгенерирует исключение.

Чтобы узнать количество сегментов в requested_cluster, можно проверить конфигурацию сервера или использовать этот запрос:

SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';

Возможные значения:

  • 0 — отключено.
  • Любое число от 1 до shards_num для соответствующей таблицы Distributed.

Пример

Запрос:

CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;

Результат:

┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
Navigation