Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

إعدادات جلسة insert_*

هذه الإعدادات متاحة في system.settings، وهي مُولَّدة تلقائيًا من الشفرة المصدرية.

insert_allow_materialized_columns

النوع
Bool
القيمة الافتراضية
0

إذا كان هذا الإعداد مفعّلًا، فسيُسمح باستخدام الأعمدة المُجسَّدة في عمليات INSERT.

insert_deduplicate

النوع
Bool
القيمة الافتراضية
1

يُفعّل أو يعطّل إزالة التكرار للكتل لأمر INSERT (في جداول Replicated*).

لا يسري هذا الإعداد إلا عند ضبط deduplicate_insert على backward_compatible_choice.

القيم الممكنة:

  • 0 — معطّل.
  • 1 — مفعّل.

افتراضيًا، تُزال تكرارات الكتل المُدرجة في الجداول المكررة بواسطة تعليمة INSERT (راجع تكرار البيانات). وبالنسبة إلى الجداول المكررة، تُزال افتراضيًا تكرارات أحدث 100 كتلة فقط لكل partition (راجع replicated_deduplication_window، replicated_deduplication_window_seconds). أما الجداول غير المكررة، فراجع non_replicated_deduplication_window.

insert_deduplication_token

يتيح هذا الإعداد للمستخدم تحديد آلية إزالة التكرار الخاصة به في MergeTree/ReplicatedMergeTree. فعلى سبيل المثال، من خلال تقديم قيمة unique لهذا الإعداد في كل تعليمة INSERT، يمكن للمستخدم تجنّب إزالة تكرار البيانات inserted نفسها.

القيم الممكنة:

  • أي String

يُستخدم insert_deduplication_token في إزالة التكرار فقط عندما لا تكون قيمته فارغة.

بالنسبة إلى الجداول المكررة، افتراضيًا لا تتم إزالة التكرار إلا لأحدث 100 عملية inserts لكل partition (راجع 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 كما هي بغضّ النظر عن هذا الإعداد.

ينطبق هذا الإعداد على استعلامات INSERT … 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