Эти настройки доступны в system.settings и автоматически сгенерированы на основе исходного кода.
insert_allow_materialized_columns
Если параметр включен, разрешается вставка в материализованные столбцы.
insert_deduplicate
Включает или отключает дедупликацию блоков при вставке (для таблиц 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
Включает или отключает вставку значений по умолчанию вместо NULL в столбцы с типом данных, отличным от Nullable.
Если тип столбца не Nullable и этот параметр отключён, вставка NULL вызывает исключение. Если тип столбца Nullable, значения NULL вставляются как есть независимо от этого параметра.
Этот параметр применим к запросам вставка … SELECT. Обратите внимание, что подзапросы SELECT могут быть объединены оператором UNION ALL.
Возможные значения:
- 0 — Вставка
NULLв столбец с типом, отличным от Nullable, вызывает исключение. - 1 — Вместо
NULLвставляется значение столбца по умолчанию.
insert_shard_id
Если значение не равно 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 │
└────────┘