> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> جدول نظامي يحتوي على إحصاءات مُعايَنة لانتقائية `filter` و`index`، جُمعت من مسارات قراءة `MergeTree` أثناء تنفيذ الاستعلام.

# system.predicate_statistics_log

<Info>
  **الاستعلام في ClickHouse Cloud**

  تُخزَّن بيانات جدول النظام هذا محليًا على كل عقدة في ClickHouse Cloud. لذلك، يتطلب الحصول على رؤية كاملة لجميع البيانات استخدام الدالة `clusterAllReplicas`. راجع [هنا](/ar/reference/system-tables/overview#system-tables-in-clickhouse-cloud) لمزيد من التفاصيل.
</Info>

<div id="description">
  ## الوصف
</div>

يحتوي على إحصاءات الانتقائية المستندة إلى عيّنات التي جُمعت أثناء القراءة من جداول `MergeTree`. ولا تتم تعبئة هذا الجدول إلا عندما تكون قيمة [`predicate_statistics_sample_rate`](/ar/reference/settings/session-settings#predicate_statistics_sample_rate) أكبر من `0`.

استخدم هذا الجدول لفحص مدى انتقائية المسندات التي يحدّدها المستخدم في أعباء العمل الفعلية، ومعرفة عدد الحبيبات المتبقية بعد التصفية بالمفتاح الأساسي أو بفهرس التخطي. وهذه البيانات مخصّصة لتكون مدخلات لتوصيات الفهارس والإسقاطات المستندة إلى أعباء العمل.

<div id="row-shapes">
  ## أنماط الصفوف
</div>

يمكن أن ينتج الاستعلام الواحد نوعين من الصفوف في `system.predicate_statistics_log`:

* **صفوف التصفية**، وتُصدَر لكل خطوة `prewhere`/تصفية في `MergeTreeSelectProcessor`. وتملأ الأعمدة `predicate_expression` و`input_rows` و`passed_rows` و`filter_selectivity`، بالإضافة إلى أعمدة المسند الكامل `total_input_rows` و`total_passed_rows` و`total_selectivity`. أما الأعمدة المرتبطة بالفهارس فتكون فارغة.
* **صفوف الفهارس**، وتُصدَر لكل خطوة قراءة في `ReadFromMergeTree`. وتملأ المصفوفات `index_names` و`index_types` و`total_granules` و`granules_after` و`index_selectivities`، بمدخل واحد لكل مرحلة فهرسة (المفتاح الأساسي، والتقسيم، وفهارس التخطي). أما الأعمدة المرتبطة بالمسند فتكون فارغة.

تشترك صفوف التصفية وصفوف الفهارس الخاصة بالاستعلام نفسه في القيمتين `query_id` و`table`، لذلك يمكن ضمّها عند الحاجة إلى كليهما.

<div id="sampling-and-overhead">
  ## أخذ العينات والعبء الإضافي
</div>

يُتحكَّم في أخذ العينات بواسطة [`predicate_statistics_sample_rate`](/ar/reference/settings/session-settings#predicate_statistics_sample_rate):

* `0` يعطّل الجمع.
* `1` يأخذ عيّنة من كل query.
* `N > 1` يأخذ عيّنة من حوالي `1 / N` من queries، استنادًا إلى قيمة `hash` لـ `query_id`.

تنتج القيم الأقل مزيدًا من البيانات، لكنها تضيف حملًا على CPU في مسار القراءة ومزيدًا من عمليات الكتابة إلى سجل النظام. بعد تمكين هذا الإعداد، استخدم [`SYSTEM FLUSH LOGS`](/ar/reference/statements/system#flush-logs) إذا كنت بحاجة إلى ظهور الصفوف فورًا.

<div id="columns">
  ## الأعمدة
</div>

* `hostname` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — اسم المضيف للخادم الذي ينفّذ الاستعلام.
* `event_date` ([Date](/ar/reference/data-types/date)) — تاريخ الحدث.
* `event_time` ([DateTime](/ar/reference/data-types/datetime)) — الطابع الزمني عند كتابة مُدخل السجل هذا.
* `database` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — اسم قاعدة بيانات الجدول الهدف.
* `table` ([LowCardinality(String)](/ar/reference/data-types/lowcardinality)) — اسم الجدول الهدف.
* `query_id` ([String](/ar/reference/data-types/string)) — معرّف الاستعلام للرجوع إلى query\_log.
* `predicate_expression` ([String](/ar/reference/data-types/string)) — تعبير المسند الكامل الذي تتعامل معه خطوة prewhere/filter هذه (تفريغ ActionsDAG).
* `input_rows` ([UInt64](/ar/reference/data-types/int-uint)) — الصفوف التي تدخل إلى خطوة prewhere/filter هذه.
* `passed_rows` ([UInt64](/ar/reference/data-types/int-uint)) — الصفوف التي اجتازت خطوة prewhere/filter هذه.
* `filter_selectivity` ([Float64](/ar/reference/data-types/float)) — انتقائية هذه الخطوة: passed\_rows / input\_rows.
* `total_input_rows` ([UInt64](/ar/reference/data-types/int-uint)) — الصفوف التي تدخل إلى أول خطوة prewhere (إجمالي الصفوف المقروءة من الحبيبات).
* `total_passed_rows` ([UInt64](/ar/reference/data-types/int-uint)) — الصفوف التي اجتازت جميع خطوات prewhere (الصفوف التي تم تمريرها إلى الاستعلام).
* `total_selectivity` ([Float64](/ar/reference/data-types/float)) — انتقائية المسند بالكامل: total\_passed\_rows / total\_input\_rows.
* `index_names` ([Array(LowCardinality(String))](/ar/reference/data-types/array)) — أسماء الفهارس المطبّقة، مثل \['PrimaryKey', 'idx\_bf\_status'] (في صفوف الفهرس فقط).
* `index_types` ([Array(LowCardinality(String))](/ar/reference/data-types/array)) — أنواع الفهارس المطبّقة: PrimaryKey وSkip وMinMax وPartition (في صفوف الفهرس فقط).
* `total_granules` ([Array(UInt64)](/ar/reference/data-types/array)) — الحبيبات الداخلة إلى كل مرحلة فهرسة (في صفوف الفهرس فقط).
* `granules_after` ([Array(UInt64)](/ar/reference/data-types/array)) — الحبيبات المتبقية بعد كل مرحلة فهرسة (في صفوف الفهرس فقط).
* `index_selectivities` ([Array(Float64)](/ar/reference/data-types/array)) — الانتقائية لكل فهرس: granules\_after / total\_granules (في صفوف الفهرس فقط).

<div id="example">
  ## مثال
</div>

```sql theme={null}
SET predicate_statistics_sample_rate = 1;

SELECT *
FROM hits
WHERE URL LIKE '%/product/%' AND EventDate >= today() - 7
FORMAT Null;

SYSTEM FLUSH LOGS predicate_statistics_log;

SELECT
    query_id,
    predicate_expression,
    round(filter_selectivity, 3) AS step_selectivity,
    round(total_selectivity, 3) AS query_selectivity,
    index_names,
    index_selectivities
FROM system.predicate_statistics_log
WHERE table = 'hits'
ORDER BY event_time DESC
LIMIT 10;
```

<div id="see-also">
  ## انظر أيضًا
</div>

* [`predicate_statistics_sample_rate`](/ar/reference/settings/session-settings#predicate_statistics_sample_rate)
* [system.query\_log](/ar/reference/system-tables/query_log)
