> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> وثائق Log

# محرك الجدول: Log

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            غير مدعوم في ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

ينتمي هذا المحّرك إلى عائلة محرّكات `Log`. اطّلع على الخصائص المشتركة لمحرّكات `Log` والفروق بينها في مقال [عائلة محركات Log](/docs/ar/reference/engines/table-engines/log-family/index).

يختلف `Log` عن [TinyLog](/docs/ar/reference/engines/table-engines/log-family/tinylog) في وجود ملف صغير من "العلامات" إلى جانب ملفات الأعمدة. وتُكتب هذه العلامات مع كل كتلة بيانات، وتحتوي على إزاحات تشير إلى موضع بدء قراءة الملف لتخطي العدد المحدد من الصفوف. وهذا يتيح قراءة بيانات الجدول باستخدام عدة خيوط تنفيذ.
وعند الوصول المتزامن إلى البيانات، يمكن تنفيذ عمليات القراءة في الوقت نفسه، بينما تحجب عمليات الكتابة عمليات القراءة وتحجب بعضها بعضًا.
لا يدعم المحرّك `Log` الفهارس. كذلك، إذا فشلت الكتابة إلى جدول، يصبح الجدول تالفًا، وتؤدي القراءة منه إلى إرجاع خطأ. ويُعد المحرّك `Log` مناسبًا للبيانات المؤقتة، والجداول التي تُكتب مرة واحدة، وأغراض الاختبار أو العرض التوضيحي.

<div id="table_engines-log-creating-a-table">
  ## إنشاء جدول
</div>

```sql theme={null}
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = Log
```

راجع الوصف التفصيلي لاستعلام [CREATE TABLE](/docs/ar/reference/statements/create/table).

<div id="table_engines-log-writing-the-data">
  ## كتابة البيانات
</div>

يخزّن محرك `Log` البيانات بكفاءة عبر كتابة كل عمود في ملفه الخاص. ولكل جدول، يكتب محرك `Log` الملفات التالية إلى مسار التخزين المحدد:

* `<column>.bin`: ملف بيانات لكل عمود، ويحتوي على البيانات المُسلسلة والمضغوطة.
  `__marks.mrk`: ملف علامات يخزّن الإزاحات وأعداد الصفوف لكل كتلة بيانات مُدرجة. وتُستخدم هذه العلامات لتسهيل تنفيذ الاستعلامات بكفاءة، إذ تُمكّن المحرك من تخطي كتل البيانات غير ذات الصلة أثناء القراءة.

<div id="writing-process">
  ### عملية الكتابة
</div>

عند كتابة البيانات إلى جدول `Log`:

1. تُسلسَل البيانات وتُضغط على شكل كتل.
2. لكل عمود، تُلحَق البيانات المضغوطة بملف `<column>.bin` المقابل له.
3. تُضاف الإدخالات المقابلة إلى ملف `__marks.mrk` لتسجيل الإزاحة وعدد صفوف البيانات المُضافة حديثًا.

<div id="table_engines-log-reading-the-data">
  ## قراءة البيانات
</div>

يتيح ملف العلامات لـ ClickHouse قراءة البيانات على التوازي. وهذا يعني أن استعلام `SELECT` يعيد الصفوف بترتيب غير متوقع. استخدم الجملة `ORDER BY` لفرز الصفوف.

<div id="table_engines-log-example-of-use">
  ## مثال للاستخدام
</div>

إنشاء جدول:

```sql theme={null}
CREATE TABLE log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = Log
```

إدراج البيانات:

```sql theme={null}
INSERT INTO log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO log_table VALUES (now(),'REGULAR','The second regular message'),(now(),'WARNING','The first warning message')
```

استخدمنا استعلامَي `INSERT` لإنشاء كتلتَي بيانات داخل ملفات `<column>.bin`.

يستخدم ClickHouse عدة خيوط تنفيذ عند تنفيذ عمليات SELECT على البيانات. يقرأ كل خيط تنفيذ كتلة بيانات منفصلة ويُرجع الصفوف الناتجة بشكل مستقل فور انتهائه. لذلك، قد لا يتطابق ترتيب كتل الصفوف في الناتج مع ترتيب الكتل نفسها في الإدخال. على سبيل المثال:

```sql theme={null}
SELECT * FROM log_table
```

```text theme={null}
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘
```

فرز النتائج (تصاعديًا افتراضيًا):

```sql theme={null}
SELECT * FROM log_table ORDER BY timestamp
```

```text theme={null}
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message  │
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
```
