adaptive_write_buffer_initial_size
add_implicit_sign_column_constraint_for_collapsing_engine
true، فسيُضاف قيد ضمني إلى العمود sign في جدول من نوع CollapsingMergeTree
أو VersionedCollapsingMergeTree، بحيث لا يُسمح إلا بالقيم الصالحة (1 و -1).
alter_column_secondary_index_mode
ALTER التي تُعدِّل الأعمدة المشمولة بفهارس ثانوية، وما الإجراء الذي يجب اتخاذه إذا
كان ذلك مسموحًا. بشكل افتراضي، يُسمح بأوامر ALTER هذه وتُعاد بناء الفهارس.
القيم الممكنة:
rebuild(الافتراضي): يعيد بناء أي فهارس ثانوية تتأثر بالعمود في أمرALTER.throw: يمنع أيALTERللأعمدة المشمولة بفهارس ثانوية صريحة عن طريق رفع استثناء. ولا يشمل هذا القيد الفهارس الضمنية، إذ ستُعاد بناؤها.drop: يحذف الفهارس الثانوية التابعة. ولن تحتوي الأجزاء الجديدة على هذه الفهارس، مما يتطلبMATERIALIZE INDEXلإعادة إنشائها.compatibility: يطابق السلوك الأصلي:throwمعALTER ... MODIFY COLUMNوrebuildمعALTER ... UPDATE/DELETE.ignore: مخصص لاستخدام الخبراء. سيترك الفهارس في حالة غير متسقة، مما قد يؤدي إلى نتائج استعلام غير صحيحة.
apply_patches_on_merge
assign_part_uuids
auto_statistics_types
minmax مُهمَل: فهو مجموعة فرعية من basic، لذا ينبغي استخدام basic بدلًا منه.
background_task_preferred_step_execution_time_ms
clean_deleted_rows
clone_replica_zookeeper_create_get_part_batch_size
compatibility_allow_sampling_expression_not_in_primary_key
compute_exact_num_defaults_for_sparse_columns
insert و
الدمج، بدلًا من تقدير sampling الأقل تكلفة والمستخدَم لاتخاذ قرار
serialization لـ متناثر. هذا الإعداد مطلوب بواسطة optimize_trivial_count_with_sparsity_filter،
الذي يستخدم العداد المحفوظ num_defaults (كما تتطلب أعمدة Nullable
أيضًا nullable_serialization_version = 'allow_sparse').
يؤدي تركه معطّلًا إلى الإبقاء على سرعة عمليات insert/الدمج كما
كانت سابقًا؛ أما تفعيله فيضيف مرورًا بتعقيد O(rows) لكل عمود مؤهَّل لـ متناثر.
deduplicate_merge_projection_mode
ignore مخصص فقط
للتوافق، وقد يؤدي إلى نتائج غير صحيحة. بخلاف ذلك، إذا كان ذلك مسموحًا، فإنه يحدد
الإجراء المتخذ عند merge للإسقاطات: إما drop أو rebuild. لذلك فإن
MergeTree الكلاسيكي يتجاهل هذا الإعداد. كما أنه يتحكم أيضًا في OPTIMIZE DEDUPLICATE،
لكن تأثيره يمتد إلى جميع أعضاء MergeTree family. وعلى غرار
الخيار lightweight_mutation_projection_mode، فهو أيضًا على مستوى part.
القيم الممكنة:
ignorethrowdroprebuild
deduplication_hashes_cache_update_wait_ms
deduplication_hashes الموجودة في الذاكرة إلى
إصدار أحدث قبل إعادة التحقق منها بحثًا عن الكتل التي أُدرجت بالفعل. تعكس ذاكرة التخزين المؤقت
الدليل deduplication_hashes في ClickHouse Keeper، بحيث تتمكن عمليات الإدراج من اكتشاف التكرارات دون
الحاجة إلى رحلة ذهاب وإياب إلى Keeper.
default_compression_codec
- مرمّز الضغط المعرَّف للعمود في تعريف الجدول
- مرمّز الضغط المعرَّف في
default_compression_codec(هذا الإعداد) - مرمّز الضغط الافتراضي المعرَّف في إعدادات
compressionالقيمة الافتراضية: سلسلة فارغة (غير معرَّفة).
القرص
dynamic_serialization_version
v1v2v3
enforce_index_structure_match_on_partition_manipulation
ATTACH/MOVE/REPLACE PARTITION)، فيجب أن تكون الفهارس والإسقاطات
متطابقة بين جدولَي المصدر والوجهة. وإلا، يمكن أن يشتمل جدول الوجهة
على فهارس وإسقاطات أكثر من تلك الموجودة في جدول المصدر.
execute_merges_on_single_replica_time_threshold
- أي عدد صحيح موجب.
finished_mutations_to_keep
force_read_through_cache_for_merges
initialization_retry_period
kill_threads
lightweight_mutation_projection_mode
DELETE مع الجداول التي تحتوي على
إسقاطات. ويعود ذلك إلى أن الصفوف في الإسقاط قد تتأثر بعملية
DELETE. لذا تكون القيمة الافتراضية هي throw. ومع ذلك، يمكن لهذا
الخيار تغيير هذا السلوك. عند ضبط القيمة على drop أو rebuild،
سيعمل الحذف مع الإسقاطات. تؤدي القيمة drop إلى حذف الإسقاط، لذلك
قد يكون ذلك سريعًا في الاستعلام الحالي لأن الإسقاط سيُحذف، لكنه قد يكون
أبطأ في الاستعلامات المستقبلية لعدم وجود أي إسقاط مرفق. أما rebuild
فسيؤدي إلى إعادة بناء الإسقاط، مما قد يؤثر في أداء الاستعلام الحالي،
لكنه قد يسرّع الاستعلامات المستقبلية. ومن مزايا هذه الخيارات أنها
تعمل فقط على مستوى الجزء، ما يعني أن الإسقاطات الموجودة في الجزء
الذي لا يتأثر ستبقى سليمة بدلًا من أن تؤدي إلى أي إجراء مثل
الحذف أو إعادة البناء.
القيم الممكنة:
throwdroprebuild
load_existing_rows_count_for_old_parts
truefalse
lock_acquire_timeout_for_background_operations
mutation_workload
workload
لعمليات التعديل التي تعمل في الخلفية لهذا الجدول. وإذا لم تُحدَّد (كسلسلة فارغة)،
فسيُستخدم بدلًا منها إعداد الخادم mutation_workload.
انظر أيضًا
non_replicated_deduplication_window
- أي عدد صحيح موجب.
0(تعطيل deduplication).
notify_newest_block_number
nullable_serialization_version
Nullable(T).
القيم الممكنة:
-
basic — استخدم أسلوب التسلسل القياسي لـ
Nullable(T). -
allow_sparse — السماح لـ
Nullable(T)باستخدام الترميز المتناثر.
object_serialization_version
v1v2v3
v3.
old_parts_lifetime
- أي عدد صحيح موجب.
old_parts_lifetime ثانية.
وتُزال الأجزاء غير النشطة إذا لم تكن مستخدمة في الاستعلامات الحالية، أي إذا
كانت قيمة refcount للجزء تساوي 1.
لا يُستدعى fsync للأجزاء الجديدة، لذلك تبقى هذه الأجزاء لبعض الوقت موجودة فقط
في ذاكرة RAM الخاصة بالخادوم (ذاكرة التخزين المؤقت لنظام التشغيل). وإذا أُعيد تشغيل الخادوم
بشكل مفاجئ، فقد تُفقَد الأجزاء الجديدة أو تتلف. لذلك، لا تُحذف الأجزاء غير النشطة
فورًا حمايةً للبيانات.
أثناء بدء التشغيل، يتحقق ClickHouse من سلامة الأجزاء. فإذا كان الجزء
المُدمَج تالفًا، يعيد ClickHouse الأجزاء غير النشطة إلى القائمة النشطة،
ثم يدمجها مرة أخرى لاحقًا. بعد ذلك، يُعاد تسمية الجزء التالف (تُضاف
البادئة broken_) ويُنقل إلى المجلد detached. أما إذا لم يكن الجزء
المُدمَج تالفًا، فتُعاد تسمية الأجزاء الأصلية غير النشطة (تُضاف
البادئة ignored_) وتُنقل إلى المجلد detached.
القيمة الافتراضية لـ dirty_expire_centisecs (وهو إعداد في نواة Linux) هي 30
ثانية (وهي الحد الأقصى للمدة التي تُخزَّن خلالها البيانات المكتوبة في ذاكرة RAM فقط)، ولكن
عند وجود أحمال كثيفة على نظام القرص، قد تُكتَب البيانات بعد ذلك بوقت أطول بكثير. وقد اختيرت
تجريبيًا قيمة 480 ثانية لـ old_parts_lifetime، وهي مدة يُضمَن خلالها
كتابة الجزء الجديد إلى القرص.
optimize_row_order
DateTime64، من هذا الإعداد.
packed_skip_index_max_bytes
skp_idx.packed واحد لكل جزء بدلًا من كتابته في ملف
skp_idx_<name>.idx2 / .mrk2 منفصل. أما التدفقات الفرعية الأكبر من ذلك فتبقى في
التخطيط القديم القائم على ملف لكل تدفق. ويُتخذ القرار بشكل مستقل لكل تدفق فرعي وقت الكتابة،
لذلك يمكن أن يحتوي جزء واحد على فهارس صغيرة
(مثل minmax) مُجمَّعة، وأخرى كبيرة (مثل bloom_filter ثقيل) في ملفات منفصلة. اضبط القيمة على 0
لتعطيل التجميع بالكامل (وهو الافتراضي).
يتكوّن كل تدفق فرعي لفهرس التخطي فعليًا من ملف بيانات وملف علامات؛ ويُخزَّن كلاهما مؤقتًا
في الذاكرة حتى بلوغ الحدّ قبل اتخاذ قرار spill. لذلك فإن الذاكرة القصوى أثناء
الكتابة تتناسب مع 2 * packed_skip_index_max_bytes * (number of substreams that stay below the threshold).
فهارس النص الكامل غير مدعومة بهذا الإعداد ولا تُجمَّع أبدًا.
يقلّل التجميع من الضغط على inode عند تعريف العديد من فهارس التخطي على جدول (على سبيل المثال
باستخدام add_minmax_index_for_numeric_columns).
تنسيق التخزين على القرص ذاتي الوصف: يكتشف القارئون skp_idx.packed ويخدمون التدفقات الفرعية
المجمَّعة من داخله بشفافية. يؤثر تغيير هذا الإعداد في الأجزاء المكتوبة حديثًا فقط؛
أما الأجزاء الموجودة فستحتفظ بأي تخطيط كانت عليه وقت الكتابة.
part_minmax_index_columns
partition_key_only— لا تُتتبَّع إلا أعمدة مفتاح التقسيم.with_block_number_offset— أعمدة مفتاح التقسيم، بالإضافة إلى العمودين الافتراضيين المحفوظين_block_numberو_block_offset. يتيح ذلك الاستبعاد على مستوى الجزء باستخدام هذين العمودين.
propagate_types_serialization_versions_to_nested_types
ratio_of_defaults_for_sparse_serialization
ratio_of_defaults_for_sparse_serialization
ليكون أقل من 1.0. وإذا كانت القيمة أكبر من أو تساوي 1.0،
فستُكتب الأعمدة دائمًا باستخدام التسلسل الكامل العادي.
القيم الممكنة:
- قيمة Float بين
0و1لتمكين التسلسل المتناثر 1.0(أو أكبر) إذا كنت لا تريد استخدام التسلسل المتناثر
s في الجدول التالي يكون سلسلة نصية فارغة في 95% من
الصفوف. في my_regular_table لا نستخدم التسلسل المتناثر، وفي
my_sparse_table نضبط ratio_of_defaults_for_sparse_serialization على
0.95:
s في my_sparse_table يشغل مساحة تخزين أقل على القرص:
serialization_kind من الجدول system.parts_columns:
s التي خُزّنت باستخدام التسلسل المتناثر:
reduce_blocking_parts_sleep_ms
replace_long_file_name_to_hash
max_file_name_length
بايت)، فاستبدله بـ SipHash128
replicated_can_become_leader
true، فستحاول النسخ المتماثلة للجداول المكرّرة على هذه العقدة تولّي القيادة.
القيم الممكنة:
truefalse
search_orphaned_parts_disks
- any - النطاق غير مقيّد.
- local - يقتصر النطاق على الأقراص المحلية.
- none - نطاق فارغ، لا تُجرى أي عملية بحث
serialization_info_version
serialization.json.
هذا الإعداد مطلوب لضمان التوافق أثناء ترقيات العنقود.
القيم الممكنة:
basic- تنسيق basic.with_types- تنسيق يتضمن الحقل الإضافيtypes_serialization_versions، مما يتيح إصدارات تسلسل لكل نوع. وهذا يجعل إعدادات مثلstring_serialization_versionفعّالة.
basic لكي تُنتج الخوادم الجديدة
أجزاء بيانات متوافقة مع الخوادم القديمة. بعد اكتمال الترقية،
بدّل إلى WITH_TYPES لتمكين إصدارات التسلسل لكل نوع.
عند تفعيله (وهو الإعداد الافتراضي)، تُعامل أعمدة Array ذات الأسماء المنقطة التي تشترك في بادئة واحدة (مثل n.a و n.b)
على أنها جزء من بنية Nested: إذ تشترك في ملف offsets واحد على القرص (مثل n.size0)،
ويُتحقق أثناء INSERT من تساوي أحجام المصفوفات فيها.
وعند تعطيله، يحصل كل عمود Array على ملف offsets مستقل، ولا تعود الأسماء المنقطة تحمل أي
دلالات خاصة، كما يمكن أن يتعايش عمود scalar مع أعمدة Array منقطة تشترك في البادئة نفسها
(مثل n UInt32 إلى جانب n.a Array(String)). هذا الإعداد غير قابل للتغيير بعد إنشاء الجدول.
simultaneous_parts_removal_limit
simultaneous_parts_removal_limit جزءًا خلال تكرار واحد.
ويعني تعيين simultaneous_parts_removal_limit إلى 0 عدم وجود حد.
storage_policy
string_serialization_version
String ذات المستوى الأعلى.
لا يكون هذا الإعداد فعّالًا إلا عندما تكون قيمة serialization_info_version مضبوطة على “with_types”.
وعند ضبطه على with_size_stream، تُسلسَل أعمدة String ذات المستوى الأعلى باستخدام
عمود فرعي منفصل .size لتخزين أطوال السلاسل النصية بدلًا من تضمينها مباشرةً. يتيح ذلك أعمدة فرعية
حقيقية باسم .size، ويمكن أن يحسّن كفاءة الضغط.
لا تتأثر أنواع String المتداخلة (مثل داخل Nullable أو LowCardinality أو Array أو Map)
بهذا الإعداد، إلا عندما تظهر داخل Tuple.
القيم الممكنة:
single_stream— استخدم تنسيق التسلسل القياسي مع أحجام مضمنة.with_size_stream— استخدم تدفّق أحجام منفصلًا لأعمدةStringذات المستوى الأعلى.
temporary_directories_lifetime
try_fetch_recompressed_part_timeout
- أي عدد صحيح موجب.
ttl_only_drop_parts
TTL الخاصة بها.
عندما يكون ttl_only_drop_parts معطّلًا (افتراضيًا)، لا تُزال إلا الصفوف التي
انتهت صلاحيتها استنادًا إلى إعدادات TTL الخاصة بها.
عندما يكون ttl_only_drop_parts مفعّلًا، يُحذف الجزء بالكامل إذا كانت جميع
الصفوف في ذلك الجزء قد انتهت صلاحيتها وفقًا لإعدادات TTL الخاصة بها.
wait_for_unique_parts_send_before_shutdown_ms
zookeeper_session_expiration_check_period
- أي عدد صحيح موجب.