query_plan_aggregation_in_order
query_plan_enable_optimizations مضبوطًا على 1.
هذا إعداد مخصص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. قد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة أو قد يُزال.
- 0 - تعطيل
- 1 - تمكين
query_plan_convert_any_join_to_semi_or_anti_join
query_plan_convert_join_to_in
JOIN إلى استعلام فرعي باستخدام IN إذا كانت أعمدة الإخراج مرتبطة بالجدول الأيسر فقط. قد يؤدي ذلك إلى نتائج غير صحيحة مع عمليات JOIN غير ANY (مثل ALL JOIN، وهو الإعداد الافتراضي).
query_plan_convert_outer_join_to_inner_join
OUTER JOIN إلى INNER JOIN إذا كانت التصفية بعد JOIN تستبعد دائمًا القيم الافتراضية
query_plan_direct_read_from_text_index
query_plan_display_internal_aliases
query_plan_enable_multithreading_after_window_functions
query_plan_enable_optimizations
هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة أو قد تتم إزالته.
- 0 - تعطيل جميع التحسينات على مستوى خطة الاستعلام
- 1 - تمكين التحسينات على مستوى خطة الاستعلام (لكن قد تظل بعض التحسينات الفردية معطلة عبر إعداداتها الخاصة)
query_plan_execute_functions_after_sorting
query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصّص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض استكشاف الأخطاء وإصلاحها. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد يُزال.
- 0 - تعطيل
- 1 - تمكين
query_plan_filter_push_down
هذا إعداد مخصّص لمستوى الخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض استكشاف الأخطاء وإصلاحها. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_join_shard_by_pk_ranges
query_plan_join_swap_table
hash join) في خطة الاستعلام. لا يتوفر هذا الإعداد إلا مع صرامة join ALL ومع عبارة JOIN ON. القيم الممكنة هي:
- ‘auto’: اترك للمخطِّط تحديد الجدول الذي سيُستخدم كجدول البناء.
- ‘false’: لا تبدّل الجداول أبدًا (الجدول الأيمن هو جدول البناء).
- ‘true’: بدّل الجداول دائمًا (الجدول الأيسر هو جدول البناء).
query_plan_lift_up_array_join
هذا إعداد مخصص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض debugging. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_lift_up_union
query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة أو قد يُزال.
- 0 - تعطيل
- 1 - تمكين
query_plan_max_limit_for_join_lazy_indexing
query_plan_max_limit_for_lazy_materialization
query_plan_max_limit_for_top_k_optimization
query_plan_max_optimizations_to_apply
هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
query_plan_max_set_size_for_projection_match
IN التي يحسب لها مطابِق الإسقاط تجزئات المحتوى ويقارنها عند تحديد ما إذا كانت مجموعتان متساويتين. وتُعامَل المجموعات الأكبر من ذلك على أنها غير متطابقة، ويجري تخطي الإسقاط. وتؤدي القيمة صفر إلى تعطيل مقارنة تجزئة المحتوى بالكامل: فلا تنجح مطابقة الإسقاط مطلقًا للعُقد التي تحتوي على مجموعات عبارة IN.
يُستخدم هذا الإعداد بواسطة مطابِق الإسقاط التجميعي (وأي مطابِق إسقاط مستقبلي يحتاج إلى مقارنة مجموعات عبارة IN). وتبلغ تكلفة حساب تجزئة المحتوى O(N log N) بالنسبة إلى عدد عناصر المجموعة؛ ويضع هذا الإعداد حدًا للتكلفة المتكبدة أثناء التخطيط عند ظهور عدد كبير من عبارات IN في الاستعلام أو الإسقاط.
query_plan_max_step_description_length
query_plan_merge_expression_into_join
query_plan_merge_expressions
هذا إعداد مخصص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_merge_filter_into_join_condition
JOIN وتحويل CROSS JOIN إلى INNER.
query_plan_merge_filters
query_plan_min_columns_for_join_lazy_indexing
query_plan_optimize_count_from_text_index
SELECT count() ... WHERE <text search predicate> مباشرةً بالاعتماد على عدد عناصر قوائم الإسناد في فهرس النص، من دون تجسيد الصفوف المطابقة.
لا يسري إلا عند تمكين query_plan_direct_read_from_text_index.
query_plan_optimize_join_order_algorithm
- ‘greedy’ - خوارزمية جشعة أساسية - تعمل بسرعة، لكنها قد لا تنتج أفضل ترتيب لعمليات JOIN
- ‘dpsize’ - يطبّق خوارزمية DPsize حاليًا على عمليات الربط الداخلية فقط - يأخذ في الاعتبار جميع ترتيبات JOIN الممكنة ويعثر على الترتيب الأمثل، لكنه قد يكون بطيئًا للاستعلامات التي تتضمن عددًا كبيرًا من الجداول وشروط JOIN.
- ‘dpsub’ - يطبّق خوارزمية DPsub التي تدعم عمليات الربط الداخلية وغير الداخلية - يأخذ في الاعتبار جميع ترتيبات JOIN الممكنة ويعثر على الترتيب الأمثل، لكنه قد يكون بطيئًا للاستعلامات التي تتضمن عددًا كبيرًا من الجداول وشروط JOIN.
- ‘dphyp’ - يطبّق خوارزمية DPhyp (البرمجة الديناميكية عبر تقسيم الرسم البياني الفائق) حاليًا على عمليات الربط الداخلية فقط - يستكشف مساحة البحث نفسها مثل
dpsize، لكنه يعدد فقط أزواج الرسوم البيانية الفرعية المتصلة، ما يولّد عددًا أقل من عمليات JOIN الوسيطة في رسوم JOIN البيانية المتناثرة، على حساب عدم مراعاة الضربات الديكارتية يمكن تحديد عدة خوارزميات في قائمة مفصولة بفواصل، مثلdphyp,greedy. وتُجرَّب بالترتيب؛ فإذا تعذّر على خوارزمية ما التعامل مع الاستعلام (على سبيل المثال بسبب عمليات الربط الخارجية أو المكوّنات غير المتصلة)، تُستخدَم الخوارزمية التالية كخيار احتياطي.
query_plan_optimize_join_order_limit
query_plan_optimize_join_order_max_searched_plans
query_plan_optimize_join_order_algorithm.
يضع هذا حدًا زمنيًا لعملية التحسين على نحو حتمي (بغض النظر عن الزمن الفعلي المنقضي) في رسوم join البيانية الكثيفة، مثل الرسوم الكاملة أو النجمية، حيث ينمو فضاء البحث نموًا أسيًا.
اضبط القيمة على 0 لتعطيل هذا الحد. لا يؤثر ذلك في query_plan_optimize_join_order_limit الافتراضي، حيث يظل البحث دائمًا أقل بكثير من هذا الحد.
query_plan_optimize_join_order_randomize
query_plan_optimize_lazy_final
query_plan_optimize_lazy_materialization
query_plan_optimize_lazy_materialization_for_object_storage
ORDER BY ... LIMIT n، لا تُقرأ الأعمدة غير اللازمة للفرز والتصفية إلا للصفوف الـ n التي تبقى بعد تطبيق LIMIT. لا يسري هذا الإعداد إلا إذا كان query_plan_optimize_lazy_materialization مفعّلًا.
query_plan_optimize_prewhere
query_plan_push_down_limit
هذا إعداد مخصّص للخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. قد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_push_limit_by_into_sort
ORDER BY ... LIMIT BY. عندما تكون أعمدة LIMIT BY بادئة لعبارة ORDER BY، يطبّق كل دفق فرز متوازٍ LIMIT BY قبل دمج التدفقات في دفق واحد، مما يقلل عدد الصفوف التي تعالجها عملية الدمج النهائية ومراحل المسار اللاحقة. ويؤدي ذلك إلى تسريع الاستعلامات التي يستبعد فيها LIMIT BY نسبة كبيرة من الصفوف.
لا يسري هذا إلا إذا كانت قيمة الإعداد query_plan_enable_optimizations تساوي 1.
القيم الممكنة:
- 0 - تعطيل
- 1 - تمكين
query_plan_read_in_order
query_plan_enable_optimizations مضبوطًا على 1.
هذا إعداد مخصّص للخبراء، وينبغي ألا يُستخدم إلا من قِبل المطورين لأغراض تصحيح الأخطاء. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_read_in_order_through_join
query_plan_read_in_order_through_spilling_join
query_plan_read_in_order_through_join بالتطبيق أيضًا على hash join مُهيأ بحد تلقائي للانسكاب إلى القرص باستخدام max_bytes_before_external_join أو max_bytes_ratio_before_external_join.
لا يمكن لهذا الربط ضمان الحفاظ على ترتيب الجدول الأيسر إلا إذا لم ينسكب إلى القرص مطلقًا، لأن الانسكاب يوزع الصفوف على حاويات بحسب التجزئة. لذلك، عند تطبيق التحسين، يُحتفَظ بالربط في الذاكرة ولا يعود حد الانسكاب مُفعّلًا؛ ويُقيَّد الجدول في الجانب الأيمن بمتتبع الذاكرة بدلًا من ذلك، كما لو لم يُهيَّأ انسكاب تلقائي.
اضبط القيمة على 0 للإبقاء على السلوك التحفظي المتمثل في عدم تمرير القراءة بالترتيب مطلقًا عبر ربط قد ينسكب إلى القرص. وتظل الاستعلامات التي تعتمد على الانسكاب للبقاء ضمن حد الذاكرة، والتي كانت ستصبح مؤهلة للتحسين لولا ذلك، تعمل كما كانت سابقًا.
لا يعتمد تحسين ORDER BY ... LIMIT المنفصل عبر JOIN، الذي يدفع Sort وLimit إلى الجانب المحفوظ من الربط، على احتفاظ الربط بأي ترتيب، ويظل متاحًا للربوط القادرة على الانسكاب إلى القرص بغض النظر عن هذا الإعداد. لكنه يفسح المجال للقراءة بالترتيب عندما تكون ممكنة؛ لذا، عند تمكين هذا الإعداد، يستخدم ORDER BY ... LIMIT فوق ربط قادر على الانسكاب إلى القرص، ويمكن لِجانبه المحفوظ بث الصفوف بالترتيب المطلوب، مخطط القراءة بالترتيب بدلًا من دفع Sort وLimit إلى الأسفل. ويحافظ هذا التحويل على شروطه السابقة، وأبرزها أن query_plan_join_swap_table مضبوط صراحةً على false: ففي الوضع الافتراضي auto، قد يبدّل تحسين لاحق جانبي الربط، مما يُبطل مخطط القراءة بالترتيب؛ لذلك لا يُعتمد هذا التحويل مطلقًا، وتحتفظ هذه الاستعلامات بـ Sort وLimit المدفوعين إلى الأسفل.
query_plan_remove_redundant_distinct
query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصّص للخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض التنقيح. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_remove_redundant_sorting
query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يستخدمه إلا المطورون لأغراض استكشاف الأخطاء وإصلاحها. قد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_remove_unused_columns
هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد يُزال.
- 0 - تعطيل
- 1 - تمكين
query_plan_reuse_storage_ordering_for_window_functions
optimize_read_in_window_order
يبدّل تحسينًا على مستوى خطة الاستعلام يستخدم ترتيب التخزين عند الفرز لدوال النوافذ.
ولا يسري مفعوله إلا إذا كانت قيمة الإعداد query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض تصحيح الأخطاء من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا على نحو غير متوافق مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_short_circuit_constant_false_join
JOIN عندما يُختزل شرط ON إلى ثابت بقيمة false، وذلك باستبدال كل جانب إدخال لا يمكنه المساهمة بأي صف (كلا الجانبين في INNER/CROSS/SEMI، والجانب غير المحفوظ في LEFT/RIGHT) بمصدر فارغ، بحيث لا يُقرأ الجانب غير المساهم. ينطبق ذلك على المحلل (enable_analyzer = 1) وعلى الخطط غير الموزعة.
query_plan_split_filter
هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يستخدمه سوى المطورين لأغراض استكشاف الأخطاء وإصلاحها. قد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين
query_plan_text_index_add_hint
query_plan_top_k_through_join
ORDER BY ... LIMIT n إلى أسفل عبر join عندما لا يشير مفتاح الفرز إلا إلى الأعمدة في الجانب الذي يحتفظ به join (LEFT/RIGHT). ويقيّد عدد الصفوف التي يجب أن ينتجها إدخال الجانب الذي يحتفظ به الربط قبل تنفيذ الربط.
لا يسري مفعوله إلا إذا كان الإعداد query_plan_enable_optimizations يساوي 1.
القيم الممكنة:
- 0 - تعطيل
- 1 - تمكين
query_plan_try_use_vector_search
query_plan_enable_optimizations تساوي 1.
هذا إعداد مخصّص للمستخدمين الخبراء، ويجب ألا يُستخدم إلا لأغراض استكشاف الأخطاء وإصلاحها من قِبل المطورين. وقد يتغير هذا الإعداد مستقبلًا بطرق غير متوافقة مع الإصدارات السابقة، أو قد تتم إزالته.
- 0 - تعطيل
- 1 - تمكين