max_temporary_columns
الحد الأقصى لعدد الأعمدة المؤقتة التي يجب الاحتفاظ بها في RAM في الوقت نفسه أثناء تنفيذ استعلام، بما في ذلك الأعمدة الثابتة. إذا ولّد الاستعلام عددًا من الأعمدة المؤقتة في الذاكرة يتجاوز العدد المحدد نتيجةً لحسابات وسيطة، فسيتم طرح استثناء. تعني القيمة0 عدم وجود حد.
max_temporary_data_on_disk_size_for_query
الحد الأقصى لكمية البيانات التي تستهلكها الملفات المؤقتة على القرص، بالبايت، عبر جميع الاستعلامات التي تعمل بالتزامن. القيم الممكنة:- عدد صحيح موجب.
0— غير محدود (افتراضي)
max_temporary_data_on_disk_size_for_user
الحد الأقصى لكمية البيانات، بالبايت، التي تستهلكها الملفات المؤقتة على القرص لجميع استعلامات المستخدم التي تُنفَّذ بالتزامن. القيم الممكنة:- عدد صحيح موجب.
0— غير محدود (الافتراضي)
max_temporary_non_const_columns
مثلmax_temporary_columns، هذا هو الحد الأقصى لعدد الأعمدة المؤقتة التي يجب
الاحتفاظ بها في RAM في الوقت نفسه عند تشغيل استعلام، ولكن من دون احتساب
الأعمدة الثابتة.
تتكوّن الأعمدة الثابتة كثيرًا أثناء تشغيل الاستعلام، لكنها لا تتطلب
عمليًا أي موارد حوسبة تُذكر.
max_temporary_table_memory_usage
الحد الأقصى لعدد بايتات الذاكرة التي يمكن أن يشغلها جدول مؤقت واحد يستخدم المحركMemory.
ينطبق هذا الإعداد على الجداول المنشأة باستخدام CREATE TEMPORARY TABLE، بما في ذلك محرك الجدول المؤقت الافتراضي
(راجع default_temporary_table_engine)، ويُحتسب بالطريقة نفسها التي يُحتسب بها total_bytes في system.tables.
يُتحقق من هذا الحد عند كل عملية INSERT في الجدول (بما في ذلك CREATE TEMPORARY TABLE ... AS SELECT)، وذلك أثناء استقبال البيانات
ثم مرة أخرى قبل إضافتها: فإذا كان الجدول سيتجاوز الحد، ترفع عملية INSERT استثناءً برمز الخطأ
TOO_MANY_BYTES ولا تُضاف البيانات. أما عملية INSERT التي تكتب باستخدام عدة خيوط تنفيذ (راجع
max_insert_threads) فتضيف بيانات كل خيط تنفيذ على حدة، لذا قد تكون بيانات بعض الخيوط قد أُضيفت بالفعل حين
يرفع خيط آخر استثناءً، غير أن الجدول لا يتجاوز الحد أبدًا. تُؤخذ القيمة من إعدادات استعلام INSERT.
ويُتحقق من الحد أيضًا بعد عمليات التعديل (ALTER TABLE ... UPDATE، وMATERIALIZE COLUMN، وغيرها)، باستخدام القيمة المأخوذة من
إعدادات استعلام ALTER: فإذا كانت البيانات المعدّلة ستتجاوز الحد، ترفع عملية التعديل استثناءً برمز الخطأ
TOO_MANY_BYTES وتبقى البيانات دون تغيير.
لاحظ أن الإعداد max_bytes_to_keep الخاص بالمحرك Memory يعمل بشكل مختلف: إذ يُزيل أقدم البيانات بدلًا من
رفض البيانات الجديدة. وإذا ضُبط الإعدادان معًا، تُطبَّق الإزالة أولًا.
القيم الممكنة:
- عدد صحيح موجب.
0— غير محدود (القيمة الافتراضية)
max_temporary_table_size_bytes_compressed
الحد الأقصى بالبايت لحجم البيانات على القرص (بعد الضغط) لجدول مؤقت واحد يستخدم محركًا من عائلةMergeTree.
ينطبق هذا الإعداد على الجداول المُنشأة باستخدام CREATE TEMPORARY TABLE، ويُحتسب الحجم بالطريقة نفسها التي يُحتسب بها total_bytes في system.tables،
أي بوصفه مجموع أحجام أجزاء البيانات النشطة.
يُفحص هذا الحد عند كل عملية INSERT في الجدول (بما في ذلك CREATE TEMPORARY TABLE ... AS SELECT) قبل تثبيت كل
جزء بيانات جديد: فإذا كان الجدول سيتجاوزه، يرفع INSERT استثناءً برمز الخطأ TOO_MANY_BYTES
ولا يُضاف جزء البيانات. أما أجزاء البيانات التي ثُبِّتت سابقًا ضمن عملية INSERT نفسها فتبقى في الجدول، كما هو الحال مع أي
خطأ آخر يقع أثناء عملية INSERT تتضمن عدة كتل. وتُؤخذ القيمة من إعدادات استعلام INSERT.
تخضع العمليات التي تضيف أجزاء بيانات موجودة إلى الجدول للقيد نفسه، وتُؤخذ القيمة حينئذٍ من إعدادات
الاستعلام الخاص بها: ATTACH PART وATTACH PARTITION وATTACH PARTITION ... FROM وREPLACE PARTITION ... FROM
وCREATE TEMPORARY TABLE ... CLONE AS. وتُرفض هذه العمليات برمّتها، إلا إذا كانت
لا تزيد حجم الجدول. وبالنسبة إلى ATTACH PARTITION، يُجرى الفحص مرة واحدة لجميع أجزاء البيانات التابعة له قبل
إرفاقها، لذا قد تتسبب عمليات الكتابة الجارية بالتزامن معه في تجاوز الجدول للحد تجاوزًا طفيفًا.
لا تُفحص أجزاء البيانات التي تكتبها عمليات الدمج والتعديل في الخلفية (ALTER TABLE ... UPDATE
وMATERIALIZE COLUMN وغيرها)، لذا قد يؤدي تعديل يزيد حجم البيانات إلى تجاوز الجدول للحد.
القيم الممكنة:
- عدد صحيح موجب.
0— بلا حد (القيمة الافتراضية)
max_temporary_table_size_bytes_uncompressed
الحد الأقصى لحجم البيانات غير المضغوطة، بالبايت، لجدول مؤقت واحد يستخدم محركًا من عائلةMergeTree.
ينطبق هذا الإعداد على الجداول المُنشأة باستخدام CREATE TEMPORARY TABLE، ويُحتسب بالطريقة نفسها التي يُحتسب بها total_bytes_uncompressed
في system.tables.
يجري التحقق من هذا الحد بالطريقة نفسها المتبعة مع max_temporary_table_size_bytes_compressed.
القيم الممكنة:
- عدد صحيح موجب.
0— بلا حد (القيمة الافتراضية)
max_temporary_tables
الحد الأقصى لعدد الجداول المؤقتة التي يمكن أن توجد في آنٍ واحد ضمن session واحدة. لا تُحتسب إلا الجداول المُنشأة باستخدامCREATE TEMPORARY TABLE، أما الجداول التي تحمل بيانات خارجية مُرسلة مع الاستعلام، و
الجداول المؤقتة التي تُبنى داخليًا لـ GLOBAL IN / GLOBAL JOIN أو لـ Materialized CTEs، فلا تُحتسب.
يُتحقَّق من هذا الحد عند إنشاء جدول مؤقت جديد، ويُرفع استثناء برمز الخطأ TOO_MANY_TABLES
إذا كانت الـ session قد بلغت هذا العدد من الجداول المؤقتة. أما استبدال جدول مؤقت قائم باستخدام
CREATE OR REPLACE TEMPORARY TABLE فلا يزيد عدد الجداول، ويُسمح به دائمًا.
القيم الممكنة:
- عدد صحيح موجب.
0— بلا حد (القيمة الافتراضية)