Skip to main content

الوصف

يحتوي على صف واحد لكل إدخال مخزَّن حاليًا في ذاكرة التخزين المؤقت للأعمدة التي فُكّ تسلسلها. تحتفظ ذاكرة التخزين المؤقت هذه في الذاكرة بالأعمدة التي سبقت قراءتها وفك تسلسلها من أجزاء بيانات MergeTree، فلا تتكبّد عمليات القراءة المتكررة لنطاق الصفوف نفسه كلفة فك الضغط وإلغاء التسلسل مرة أخرى. يقابل كل إدخال نطاقًا متصلًا من الحبيبات [row_begin, row_end) لعمود واحد من جزء بيانات واحد، ضمن شريط ثابت من الجزء يضم نحو 65536 صفًا. تُخدَم عمليات القراءة من ذاكرة التخزين المؤقت حبيبةً تلو الأخرى، والأشرطة هي نفسها في كل قراءة للجزء، ولذلك لا تتأثر الإدخالات بالطريقة التي يقسّم بها الاستعلام الجزء إلى نطاقات علامات: فالقراءة التي لا تشمل سوى بعض حبيبات الشريط تخزّن تلك الحبيبات وحدها مؤقتًا، وتُدمج النطاقات المتجاورة التي كتبتها عمليات قراءة مختلفة. تُعرّف ذاكرة التخزين المؤقت الإدخالات بمعرّف UUID الخاص بالجدول، ولذلك لا تعمل إلا مع الجداول الموجودة في قواعد بيانات تُسند معرّفات UUID، مثل Atomic وReplicated وShared (محرك قاعدة البيانات الافتراضي في ClickHouse Cloud). أما الجداول الموجودة في قواعد بيانات Ordinary القديمة فليس لها معرّف UUID، فتُستبعد من ذاكرة التخزين المؤقت دون أي تنبيه. كما لا تشارك في ذاكرة التخزين المؤقت إلا الأجزاء العريضة (wide parts)؛ أما الأجزاء المدمجة (compact parts) فتُستبعد دون أي تنبيه. يُتحكَّم في ذاكرة التخزين المؤقت عبر إعدادات الخادم columns_cache_size (وقيمته الافتراضية تساوي columns_cache_size_to_ram_ratio من الذاكرة المتاحة للخادم) وcolumns_cache_size_ratio، وعبر الإعدادات على مستوى الاستعلام use_columns_cache وenable_reads_from_columns_cache وenable_writes_to_columns_cache وcolumns_cache_max_estimated_bytes_to_write_to_cache وcolumns_cache_max_bytes_to_write_to_cache. ويمكن حذفها يدويًا باستخدام SYSTEM DROP COLUMNS CACHE. تُرشَّح الصفوف وفقًا لصلاحيات الوصول: فلا يظهر الإدخال إلا للمستخدم المسموح له برؤية جدوله وعموده معًا، أي الذي يملك صلاحية SHOW TABLES على الجدول وصلاحية SHOW COLUMNS على العمود. ولا يتخطى منحُ صلاحية SHOW COLUMNS على *.* سحبَ الصلاحية من جدول أو عمود بعينه، لأن هذا الجدول يكشف بيانات تشغيلية (أسماء الأجزاء ونطاقات الصفوف والأحجام المخزنة مؤقتًا)، لا المخطط فحسب. أما إدخالات الجدول الذي لم يعد موجودًا فلا تحمل اسمًا يمكن التحقق منه، ولذلك لا تظهر إلا للمستخدم الذي يملك صلاحية SHOW COLUMNS على المستوى العام.

الأعمدة

  • database (String) — اسم قاعدة البيانات التي ينتمي إليها جدول جزء البيانات.
  • table (String) — اسم الجدول.
  • table_uuid (UUID) — معرّف UUID للجدول. يظل ثابتًا عند إعادة تسمية الجدول.
  • part (String) — اسم جزء البيانات.
  • column (String) — اسم العمود.
  • row_begin (UInt64) — فهرس صف البداية في النطاق المخزَّن مؤقتًا (مُضمَّن).
  • row_end (UInt64) — فهرس صف النهاية في النطاق المخزَّن مؤقتًا (غير مُضمَّن).
  • rows (UInt64) — عدد الصفوف في النطاق المخزَّن مؤقتًا (row_end - row_begin).
  • bytes (UInt64) — حجم الذاكرة التي يشغلها الإدخال بالبايت، ويساوي الحجم المخصَّص للعمود المخزَّن مؤقتًا مضافًا إليه حمل إضافي صغير لكل إدخال. وعلى هذه الكمية يُطبَّق الحد الأقصى لذاكرة التخزين المؤقت، ولذا يبقى مجموع قيم هذا العمود عبر جميع الإدخالات ضمن columns_cache_size. وقد تتجاوز هذه القيمة الحجم المنطقي للصفوف، لأن العمود يحتفظ بالسعة التي خُصِّصت له في الأصل.

أمثلة

إجمالي الذاكرة التي تستهلكها الأعمدة المخزنة مؤقتًا في كل جدول:
أكبر الإدخالات المنفردة في ذاكرة التخزين المؤقت:

انظر أيضًا

  • SYSTEM DROP COLUMNS CACHE — العبارة التي تحذف جميع الإدخالات من ذاكرة التخزين المؤقت لـ column.