الانتقال إلى المحتوى الرئيسي
يوفّر هذا المحرك تكاملًا مع منظومة Amazon S3 ويتيح الاستيراد المتدفق. يشبه هذا المحرك محركَي Kafka وRabbitMQ، لكنه يوفّر ميزات خاصة بـ S3. من المهم فهم هذه الملاحظة الواردة في طلب السحب الأصلي لتنفيذ S3Queue: عند ربط MATERIALIZED VIEW بالمحرك، يبدأ محرك الجدول S3Queue في جمع البيانات في الخلفية.

إنشاء جدول

CREATE TABLE s3_queue_engine_table (name String, value UInt32)
    ENGINE = S3Queue(path, [NOSIGN, | aws_access_key_id, aws_secret_access_key,] format, [compression], [headers], [extra_credentials])
    [SETTINGS]
    [mode = '',]
    [after_processing = 'keep',]
    [keeper_path = '',]
    [loading_retries = 10,]
    [processing_threads_num = 16,]
    [parallel_inserts = false,]
    [enable_logging_to_queue_log = true,]
    [last_processed_path = "",]
    [tracked_files_limit = 1000,]
    [tracked_file_ttl_sec = 0,]
    [polling_min_timeout_ms = 1000,]
    [polling_max_timeout_ms = 600000,]
    [polling_backoff_ms = 30000,]
    [cleanup_interval_min_ms = 60000,]
    [cleanup_interval_max_ms = 60000,]
    [buckets = 0,]
    [list_objects_batch_size = 1000,]
    [enable_hash_ring_filtering = 0,]
    [max_processed_files_before_commit = 100,]
    [max_processed_rows_before_commit = 0,]
    [max_processed_bytes_before_commit = 0,]
    [max_processing_time_sec_before_commit = 0,]
قبل الإصدار 24.7، يجب استخدام البادئة s3queue_ لجميع الإعدادات باستثناء mode وafter_processing وkeeper_path.
معلمات المحرك معلمات S3Queue هي نفسها المعلمات التي يدعمها محرك الجدول S3. راجع قسم المعلمات هنا. مثال
CREATE TABLE s3queue_engine_table (name String, value UInt32)
ENGINE=S3Queue('https://clickhouse-public-datasets.s3.amazonaws.com/my-test-bucket-768/*', 'CSV', 'gzip')
SETTINGS
    mode = 'unordered';
باستخدام المجموعات المُسمّاة:
<clickhouse>
    <named_collections>
        <s3queue_conf>
            <url>https://clickhouse-public-datasets.s3.amazonaws.com/my-test-bucket-768/*</url>
            <access_key_id>test</access_key_id>
            <secret_access_key>test</secret_access_key>
        </s3queue_conf>
    </named_collections>
</clickhouse>
CREATE TABLE s3queue_engine_table (name String, value UInt32)
ENGINE=S3Queue(s3queue_conf, format = 'CSV', compression_method = 'gzip')
SETTINGS
    mode = 'ordered';

الإعدادات

للحصول على قائمة بالإعدادات المضبوطة للجدول، استخدم جدول system.s3_queue_settings. وهو متاح بدءًا من 24.10.
أسماء الإعدادات (24.7+)بدءًا من الإصدار 24.7، يمكن تحديد إعدادات S3Queue مع البادئة s3queue_ أو بدونها:
  • الصياغة الحديثة (24.7+): processing_threads_num, tracked_file_ttl_sec، إلخ.
  • الصياغة القديمة (جميع الإصدارات): s3queue_processing_threads_num, s3queue_tracked_file_ttl_sec، إلخ.
كلتا الصيغتين مدعومتان في 24.7+. وتستخدم الأمثلة في هذه الصفحة الصياغة الحديثة من دون بادئة.

الوضع

القيم الممكنة:
  • unordered — في الوضع unordered، تُتَابَع مجموعة جميع الملفات التي تمت معالجتها بالفعل باستخدام عُقد دائمة في ZooKeeper.
  • ordered — في الوضع ordered، تُعالَج الملفات بترتيب معجمي. وهذا يعني أنه إذا تمت معالجة ملف باسم ‘BBB’ في وقت ما ثم أُضيف لاحقًا ملف باسم ‘AA’ إلى الحاوية، فسيتم تجاهله. ولا يُخزَّن في ZooKeeper إلا أكبر اسم (بالمعنى المعجمي) للملف الذي تم استهلاكه بنجاح، وأسماء الملفات التي ستُعاد محاولة معالجتها بعد محاولة تحميل غير ناجحة.
القيمة الافتراضية: ordered في الإصدارات السابقة لـ 24.6. واعتبارًا من 24.6، لم تعد هناك قيمة افتراضية، وأصبح من اللازم تحديد هذا الإعداد يدويًا. أما بالنسبة إلى الجداول التي أُنشئت على إصدارات أقدم، فستظل القيمة الافتراضية Ordered لأغراض التوافق.

after_processing

كيفية التعامل مع الملف بعد نجاح معالجته. القيم الممكنة:
  • keep.
  • delete.
  • move.
  • tag.
القيمة الافتراضية: keep. يتطلب النقل إعدادات إضافية. في حالة النقل داخل حاوية bucket نفسها، يجب توفير بادئة مسار جديدة في after_processing_move_prefix. يتطلب النقل إلى حاوية S3 bucket أخرى تحديد URI لحاوية bucket الهدف في after_processing_move_uri، وبيانات اعتماد S3 في after_processing_move_access_key_id وafter_processing_move_secret_access_key. مثال:
CREATE TABLE s3queue_engine_table (name String, value UInt32)
ENGINE=S3Queue('https://clickhouse-public-datasets.s3.amazonaws.com/my-test-bucket-768/*', 'CSV', 'gzip')
SETTINGS
    mode = 'unordered',
    after_processing = 'move',
    after_processing_retries = 20,
    after_processing_move_prefix = 'dst_prefix',
    after_processing_move_uri = 'https://clickhouse-public-datasets.s3.amazonaws.com/dst-bucket',
    after_processing_move_access_key_id = 'test',
    after_processing_move_secret_access_key = 'test';
يتطلب النقل من حاوية Azure إلى حاوية Azure أخرى تحديد سلسلة connection string لـ Blob Storage في after_processing_move_connection_string، واسم الحاوية في after_processing_move_container. راجع إعدادات AzureQueue. يتطلب وضع العلامات توفير مفتاح العلامة وقيمتها في after_processing_tag_key وafter_processing_tag_value.

after_processing_retries

عدد مرات إعادة محاولة تنفيذ إجراء ما بعد المعالجة المطلوب قبل التوقف. القيم الممكنة:
  • عدد صحيح غير سالب.
القيمة الافتراضية: 10.

after_processing_move_access_key_id

معرّف مفتاح الوصول إلى حاوية S3 التي تُنقل إليها الملفات التي تمت معالجتها بنجاح، إذا كانت الوجهة حاوية S3 أخرى. القيم الممكنة:
  • String.
القيمة الافتراضية: سلسلة فارغة.

after_processing_move_prefix

بادئة المسار التي تُنقل إليها الملفات التي تمت معالجتها بنجاح. ينطبق ذلك في كلتا الحالتين: النقل داخل الـ حاوية نفسه أو إلى حاوية آخر. القيم الممكنة:
  • String.
القيمة الافتراضية: سلسلة فارغة.

after_processing_move_preserve_path

إذا كانت القيمة true، فسيُضاف مسار كائن المصدر الكامل إلى after_processing_move_prefix عند نقل ملف تمت معالجته بنجاح، بحيث يُحفَظ هيكل دليل المصدر داخل الـ حاوية في الوجهة. وإذا كانت القيمة false، فسيُستخدم اسم الملف فقط، ويُسطَّح هيكل دليل المصدر. القيم الممكنة:
  • true / false.
القيمة الافتراضية: false.

after_processing_move_secret_access_key

مفتاح الوصول السري لحاوية S3 التي تُنقل إليها الملفات التي تمت معالجتها بنجاح، إذا كانت الوجهة حاوية S3 أخرى. القيم الممكنة:
  • String.
القيمة الافتراضية: سلسلة فارغة.

after_processing_move_uri

عنوان URI لحاوية S3 التي ستُنقل إليها الملفات التي تمت معالجتها بنجاح، إذا كانت الوجهة حاوية S3 أخرى. القيم الممكنة:
  • سلسلة نصية.
القيمة الافتراضية: سلسلة فارغة.

after_processing_tag_key

مفتاح الوسم المستخدَم لتعيين وسم للملفات التي تمت معالجتها بنجاح، إذا كانت قيمة after_processing='tag'. القيم الممكنة:
  • سلسلة نصية.
القيمة الافتراضية: سلسلة فارغة.

after_processing_tag_value

قيمة الوسم التي ستُستخدم لوسم الملفات التي تمت معالجتها بنجاح، إذا كانت after_processing='tag'. القيم الممكنة:
  • String.
القيمة الافتراضية: سلسلة فارغة.

keeper_path

المسار إلى البيانات الوصفية لـ queue في ZooKeeper. إذا لم يتم تحديده صراحةً، يُنشئ ClickHouse المسار من s3queue_default_zookeeper_path وUUID قاعدة البيانات وUUID الجدول. تُستخدم القيم المطلقة (التي تبدأ بـ /) كما هي، بينما تُلحَق القيم النسبية بالبادئة المُعدّة. تُوسَّع وحدات الماكرو مثل {database} أو {uuid} قبل أن يتصل محرك بـ ZooKeeper. لاستهداف auxiliary ZooKeeper cluster، أضِف إلى القيمة الاسم المُعدّ كبادئة، على سبيل المثال analytics_keeper:/clickhouse/queue/orders. يجب أن يكون الاسم موجودًا في <auxiliary_zookeepers>؛ وإلا فسيُبلغ محرك عن Unknown auxiliary ZooKeeper name .... ويُحتفَظ بالسلسلة الكاملة (بما في ذلك البادئة) في SHOW CREATE TABLE بحيث يمكن تكرار التعليمة حرفيًا. Possible values:
  • String.
القيمة الافتراضية: /.

loading_retries

أعِد محاولة تحميل الملف حتى عدد المرات المحدد. القيم الممكنة:
  • عدد صحيح غير سالب.
القيمة الافتراضية: 10.

processing_threads_num

عدد الخيوط المستخدَمة للمعالجة. ينطبق فقط على وضع Unordered. القيمة الافتراضية: عدد وحدات المعالجة المركزية (CPU) أو 16.

parallel_inserts

افتراضيًا، سينتج processing_threads_num عملية INSERT واحدة، لذا سيقتصر الأمر على تنزيل الملفات وتحليلها باستخدام عدة خيوط. لكن هذا يحدّ من مستوى التوازي، لذلك للحصول على إنتاجية أفضل استخدم parallel_inserts=true، إذ يتيح ذلك إدراج البيانات بالتوازي (مع الانتباه إلى أن هذا سيؤدي إلى زيادة عدد أجزاء البيانات المُنشأة لمحركات عائلة MergeTree).
سيتم إنشاء عمليات INSERT وفقًا لإعدادات max_process*_before_commit.
القيمة الافتراضية: false.

enable_logging_to_queue_log

تمكين التسجيل في system.s3queue_log. القيمة الافتراضية: 1.

polling_min_timeout_ms

يحدّد الحد الأدنى للوقت، بالمللي ثانية، الذي ينتظره ClickHouse قبل إجراء محاولة polling التالية. القيم الممكنة:
  • عدد صحيح موجب.
القيمة الافتراضية: 1000.

polling_max_timeout_ms

يحدّد الحد الأقصى للمدة، بالمللي ثانية، التي ينتظرها ClickHouse قبل بدء محاولة polling التالية. القيم الممكنة:
  • عدد صحيح موجب.
القيمة الافتراضية: 600000.

polling_backoff_ms

يحدّد وقت الانتظار الإضافي الذي يُضاف إلى فترة polling السابقة عند عدم العثور على ملفات جديدة. وتُجرى عملية poll التالية بعد مجموع الفترة السابقة وقيمة backoff هذه، أو الحد الأقصى للفترة، أيهما أقل. القيم الممكنة:
  • عدد صحيح موجب.
القيمة الافتراضية: 30000.

tracked_files_limit

يتيح تقييد عدد عُقد ZooKeeper عند استخدام الوضع ‘unordered’، ولا يكون له أي تأثير في الوضع ‘ordered’. إذا تم بلوغ الحد، فستُحذف أقدم الملفات التي تمت معالجتها من عقدة ZooKeeper ثم تُعالَج مرة أخرى. القيم الممكنة:
  • عدد صحيح موجب.
القيمة الافتراضية: 1000.

tracked_file_ttl_sec

الحد الأقصى لعدد الثواني للاحتفاظ بالملفات المُعالَجة في عقدة ZooKeeper (ويكون الاحتفاظ بها إلى الأبد افتراضيًا) في وضع ‘unordered’، ولا يكون له أي تأثير في وضع ‘ordered’. بعد انقضاء عدد الثواني المحدد، ستتم إعادة استيراد الملف. القيم الممكنة:
  • عدد صحيح موجب.
القيمة الافتراضية: 0.

cleanup_interval_min_ms

في وضع ‘Ordered’. يحدّد الحد الأدنى للفاصل الزمني لإعادة جدولة مهمة في الخلفية، وهي المسؤولة عن صيانة TTL للملفات المتتبَّعة والحد الأقصى لمجموعة الملفات المتتبَّعة. القيمة الافتراضية: 60000.

cleanup_interval_max_ms

لوضع Ordered. يحدِّد الحد الأقصى للفاصل الزمني لإعادة جدولة مهمة تعمل في الخلفية، والمسؤولة عن إدارة TTL للملفات المتتبعة والحد الأقصى لمجموعة الملفات المتتبعة. القيمة الافتراضية: 60000.

buckets

لوضع ‘Ordered’. متاح منذ 24.6. إذا كانت هناك عدة نُسخ متماثلة لجدول S3Queue، وكانت جميعها تعمل مع دليل البيانات الوصفية نفسه في Keeper، فيجب أن تكون قيمة buckets مساويةً على الأقل لعدد النُسخ المتماثلة. وإذا استُخدم أيضًا الإعداد processing_threads، فمن المنطقي زيادة قيمة الإعداد buckets أكثر، لأنه يحدد درجة التوازي الفعلية لمعالجة S3Queue.

use_persistent_processing_nodes

افتراضيًا، كان جدول S3Queue يستخدم دائمًا عُقد معالجة مؤقتة، ما قد يؤدي إلى تكرار البيانات إذا انتهت صلاحية جلسة ZooKeeper قبل أن يسجّل S3Queue الملفات المُعالَجة نهائيًا في ZooKeeper، ولكن بعد أن يكون قد بدأ معالجتها. يفرض هذا الإعداد على الخادم منع احتمال حدوث تكرارات عند انتهاء صلاحية جلسة Keeper.

persistent_processing_node_ttl_seconds

في حال إنهاء الخادم بصورة غير سليمة، قد يحدث أنه إذا كان use_persistent_processing_nodes ممكّنًا، فستبقى بعض عقد المعالجة بدون إزالة. يحدّد هذا الإعداد فترة زمنية يمكن خلالها تنظيف عقد المعالجة هذه بأمان. ويُستخدم TTL نفسه أيضًا لقفل الحاوية في وضع Ordered، وقد يبقى هذا القفل لمدة أطول من عقدة معالجة واحدة، لذا ينبغي أن تراعي القيمة ذلك أيضًا. القيمة الافتراضية: 21600 (6 ساعات).

الإعدادات المتعلّقة بـ S3

يدعم هذا المحرك جميع الإعدادات المتعلّقة بـ S3. لمزيد من المعلومات عن إعدادات S3، راجع هذه الصفحة.

الوصول المستند إلى الأدوار في S3

يدعم محرك الجدول s3Queue الوصول المستند إلى الأدوار. راجِع الوثائق هنا للاطلاع على خطوات تهيئة دور للوصول إلى حاوية bucket الخاصة بك. بمجرد تهيئة الدور، يمكن تمرير roleARN عبر المعلَمة extra_credentials كما هو موضح أدناه:
CREATE TABLE s3_table
(
    ts DateTime,
    value UInt64
)
ENGINE = S3Queue(
                'https://<your_bucket>/*.csv',
                extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/<your_role>')
                ,'CSV')
SETTINGS
    ...

وضع S3Queue المرتّب

يتيح وضع المعالجة S3Queue تخزين قدر أقل من البيانات الوصفية في ZooKeeper، لكنه يفرض قيدًا يتمثل في أن الملفات التي تُضاف لاحقًا زمنيًا يجب أن تكون أسماؤها أكبر أبجديًا رقميًا. يدعم وضع S3Queueordered، وكذلك unordered، الإعداد (s3queue_)processing_threads_num (تكون البادئة s3queue_ اختيارية)، والذي يتيح التحكم في عدد الخيوط التي ستتولى معالجة ملفات S3 محليًا على الخادم. بالنسبة إلى وضع ordered من دون تقسيم، قد يستأنف ClickHouse سرد عناصر S3 من آخر مفتاح تمت معالجته لتجنب إعادة سرد السجل الكامل للبادئة. وفي الوضع المرتّب المعتمد على buckets، تُحدَّد نقطة الاستئناف بشكل متحفّظ باعتبارها أصغر مفتاح تمت معالجته عبر جميع buckets لتجنب تخطي الملفات غير المعالجة. لا يُستخدم تحسين استئناف السرد هذا إلا مع قوائم الانتظار المستندة إلى S3 في وضع ordered من دون تقسيم (وليس مع AzureQueue أو عند ضبط partitioning_mode). إضافةً إلى ذلك، يقدّم وضع ordered أيضًا إعدادًا آخر يسمى (s3queue_)buckets ويعني “الخيوط المنطقية”. ويعني هذا أنه في السيناريو الموزّع، عندما تكون هناك عدة خوادم تحتوي على نسخ متماثلة لجدول S3Queue، فإن هذا الإعداد يحدّد عدد وحدات المعالجة. على سبيل المثال، سيحاول كل خيط معالجة على كل نسخة متماثلة من S3Queue قفل حاوية معيّن للمعالجة، ويُسنَد كل حاوية إلى ملفات معيّنة استنادًا إلى hash اسم الملف. لذلك، في السيناريو الموزّع، يُوصى بشدة بأن تكون قيمة الإعداد (s3queue_)buckets مساوية على الأقل لعدد النسخ المتماثلة أو أكبر منه. ولا توجد مشكلة في أن يكون عدد buckets أكبر من عدد النسخ المتماثلة. أما السيناريو الأمثل فهو أن تكون قيمة الإعداد (s3queue_)buckets مساوية لحاصل ضرب number_of_replicas و(s3queue_)processing_threads_num. لا يُنصح باستخدام الإعداد (s3queue_)processing_threads_num قبل الإصدار 24.6. يتوفر الإعداد (s3queue_)buckets بدءًا من الإصدار 24.6.

SELECT من محرك الجدول S3Queue

تكون استعلامات SELECT محظورة افتراضيًا على جداول S3Queue. ويتبع ذلك النمط الشائع لقائمة الانتظار، حيث تُقرأ البيانات مرة واحدة ثم تُزال من قائمة الانتظار. ويُحظر SELECT لمنع فقدان البيانات غير المقصود. ومع ذلك، قد يكون هذا مفيدًا في بعض الأحيان. للقيام بذلك، تحتاج إلى ضبط الإعداد stream_like_engine_allow_direct_select على True. يحتوي محرك S3Queue على إعداد خاص لاستعلامات SELECT: commit_on_select. اضبطه على False للاحتفاظ بالبيانات في قائمة الانتظار بعد قراءتها، أو على True لإزالتها.

الوصف

لا يُعد SELECT مفيدًا كثيرًا في الاستيراد المتدفق (إلا لأغراض استكشاف الأخطاء وإصلاحها)، لأن كل ملف لا يمكن استيراده إلا مرة واحدة. ومن الأكثر عملية إنشاء تدفقات آنية باستخدام العروض المادية. للقيام بذلك:
  1. استخدم المحرّك لإنشاء جدول للاستهلاك من المسار المحدد في S3، واعتبره تدفق بيانات.
  2. أنشئ جدولًا بالبنية المطلوبة.
  3. أنشئ عرضًا ماديًا يحوّل البيانات من المحرّك ويضعها في جدول تم إنشاؤه مسبقًا.
عند ربط MATERIALIZED VIEW بالمحرّك، يبدأ في جمع البيانات في الخلفية. مثال:
  CREATE TABLE s3queue_engine_table (name String, value UInt32)
    ENGINE=S3Queue('https://clickhouse-public-datasets.s3.amazonaws.com/my-test-bucket-768/*', 'CSV', 'gzip')
    SETTINGS
        mode = 'unordered';

  CREATE TABLE stats (name String, value UInt32)
    ENGINE = MergeTree() ORDER BY name;

  CREATE MATERIALIZED VIEW consumer TO stats
    AS SELECT name, value FROM s3queue_engine_table;

  SELECT * FROM stats ORDER BY name;

الأعمدة الافتراضية

  • _path — مسار الملف.
  • _file — اسم الملف.
  • _size — حجم الملف.
  • _time — وقت إنشاء الملف.
لمزيد من المعلومات عن الأعمدة الافتراضية، راجع هذا القسم.

أحرف البدل في path

يمكن للوسيطة path تحديد عدة ملفات باستخدام أحرف بدل شبيهة بتلك المستخدمة في bash. ولكي يُعالَج الملف، يجب أن يكون موجودًا وأن يطابق نمط المسار بالكامل. وتُحدَّد قائمة الملفات أثناء SELECT (وليس وقت CREATE).
  • * — يستبدل أي عدد من المحارف، باستثناء /، بما في ذلك السلسلة الفارغة.
  • ** — يستبدل أي عدد من المحارف، بما في ذلك /، بما في ذلك السلسلة الفارغة.
  • ? — يستبدل أي محرف واحد.
  • {some_string,another_string,yet_another_one} — يستبدل أيًّا من السلاسل 'some_string', 'another_string', 'yet_another_one'.
  • {N..M} — يستبدل أي رقم ضمن النطاق من N إلى M، بما في ذلك الحدّان. ويمكن أن تحتوي N وM على أصفار بادئة، مثل 000..078.
البنى التي تحتوي على {} مشابهة لدالة الجدول remote.

القيود

  1. قد تنتج الصفوف المكررة بسبب:
  • حدوث استثناء أثناء parsing في منتصف معالجة الملف، مع تفعيل retries عبر s3queue_loading_retries;
  • إعداد S3Queue على عدة خوادم تشير إلى المسار نفسه في ZooKeeper، وانتهاء session الخاصة بـ Keeper قبل أن يتمكن أحد الخوادم من commit الملف المُعالَج، مما قد يؤدي إلى أن يتولى خادم آخر معالجة الملف، رغم أن الخادم الأول قد يكون عالجه جزئيًا أو بالكامل؛ ومع ذلك، لم يعد هذا ينطبق اعتبارًا من الإصدار 25.8 إذا كانت use_persistent_processing_nodes = 1.
  • إنهاء غير طبيعي للخادم.
  1. إذا كان S3Queue مُعدًّا على عدة خوادم تشير إلى المسار نفسه في ZooKeeper، وكان وضع Ordered مستخدمًا، فلن تعمل s3queue_loading_retries. سيُصلَح هذا قريبًا.

الاستقصاء الداخلي

للاستقصاء الداخلي، استخدم الجدول عديم الحالة system.s3queue_metadata_cache والجدول الدائم system.s3queue_log.
  1. system.s3queue_metadata_cache. هذا الجدول غير دائم ويعرض الحالة المخزنة في الذاكرة لـ S3Queue: الملفات التي تجري معالجتها حاليًا، والملفات التي تمت معالجتها أو التي فشلت.
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
CREATE TABLE system.s3queue_metadata_cache
(
    `database` String,
    `table` String,
    `file_name` String,
    `rows_processed` UInt64,
    `status` String,
    `processing_start_time` Nullable(DateTime),
    `processing_end_time` Nullable(DateTime),
    `ProfileEvents` Map(String, UInt64)
    `exception` String
)
ENGINE = SystemS3Queue
COMMENT 'Contains in-memory state of S3Queue metadata and currently processed rows per file.'
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
مثال:

SELECT *
FROM system.s3queue_metadata_cache

Row 1:
──────
zookeeper_path:        /clickhouse/s3queue/25ea5621-ae8c-40c7-96d0-cec959c5ab88/3b3f66a1-9866-4c2e-ba78-b6bfa154207e
file_name:             wikistat/original/pageviews-20150501-030000.gz
rows_processed:        5068534
status:                Processed
processing_start_time: 2023-10-13 13:09:48
processing_end_time:   2023-10-13 13:10:31
ProfileEvents:         {'ZooKeeperTransactions':3,'ZooKeeperGet':2,'ZooKeeperMulti':1,'SelectedRows':5068534,'SelectedBytes':198132283,'ContextLock':1,'S3QueueSetFileProcessingMicroseconds':2480,'S3QueueSetFileProcessedMicroseconds':9985,'S3QueuePullMicroseconds':273776,'LogTest':17}
exception:
  1. system.s3queue_log. جدول دائم. يتضمن المعلومات نفسها الموجودة في system.s3queue_metadata_cache، ولكن لملفات processed وfailed.
لدى الجدول البنية التالية:
SHOW CREATE TABLE system.s3queue_log

Query id: 0ad619c3-0f2a-4ee4-8b40-c73d86e04314

┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
CREATE TABLE system.s3queue_log
(
    `event_date` Date,
    `event_time` DateTime,
    `table_uuid` String,
    `file_name` String,
    `rows_processed` UInt64,
    `status` Enum8('Processed' = 0, 'Failed' = 1),
    `processing_start_time` Nullable(DateTime),
    `processing_end_time` Nullable(DateTime),
    `ProfileEvents` Map(String, UInt64),
    `exception` String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, event_time) │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
لاستخدام system.s3queue_log، حدِّد إعداده في ملف إعدادات الخادم:
    <s3queue_log>
        <database>system</database>
        <table>s3queue_log</table>
    </s3queue_log>
مثال:
SELECT *
FROM system.s3queue_log

Row 1:
──────
event_date:            2023-10-13
event_time:            2023-10-13 13:10:12
table_uuid:
file_name:             wikistat/original/pageviews-20150501-020000.gz
rows_processed:        5112621
status:                Processed
processing_start_time: 2023-10-13 13:09:48
processing_end_time:   2023-10-13 13:10:12
ProfileEvents:         {'ZooKeeperTransactions':3,'ZooKeeperGet':2,'ZooKeeperMulti':1,'SelectedRows':5112621,'SelectedBytes':198577687,'ContextLock':1,'S3QueueSetFileProcessingMicroseconds':1934,'S3QueueSetFileProcessedMicroseconds':17063,'S3QueuePullMicroseconds':5841972,'LogTest':17}
exception:
آخر تعديل في ٢٩ يونيو ٢٠٢٦