يمكنك سرد توصيات ضبط الفهرس الناتجة عن ضبط الفهرس في خادم موجود عبر الأمر az postgres flexible-server index-tuning list-recommendations .
لسرد جميع توصيات CREATE INDEX، استخدم هذا الأمر:
az postgres flexible-server index-tuning list-recommendations \
--resource-group <resource_group> \
--server-name <server> \
--recommendation-type createindex
يقوم الأمر بإرجاع جميع المعلومات حول توصيات CREATE INDEX التي تم إنتاجها بواسطة ضبط الفهرس، مع إظهار شيء مشابه للإخراج التالي:
[
{
"analyzedWorkload": {
"endTime": "2025-02-26T14:40:18.788628+00:00",
"queryCount": 18,
"startTime": "2025-02-26T13:40:18.788628+00:00"
},
"details": {
"databaseName": "<database>",
"includedColumns": "",
"indexColumns": "\"<table>\".\"<column>\"",
"indexName": "<index>",
"indexType": "BTREE",
"schema": "<schema>",
"table": "<table>"
},
"estimatedImpact": [
{
"absoluteValue": 0.3984375,
"dimensionName": "IndexSize",
"queryId": null,
"unit": "MB"
},
{
"absoluteValue": 62.86969111969111,
"dimensionName": "QueryCostImprovement",
"queryId": -555955670159268890,
"unit": "Percentage"
}
],
"id": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<server>/tuningOptions/index/recommendations/<recommendation_id>",
"implementationDetails": {
"method": "SQL",
"script": "create index concurrently <index> on <schema>.<table>(<column>)"
},
"improvedQueryIds": [
-555955670159268890
],
"initialRecommendedTime": "2025-02-26T14:40:19.707617+00:00",
"kind": "",
"lastRecommendedTime": "2025-02-26T14:40:19.707617+00:00",
"name": "CreateIndex_<database>_<schema>_<column>_idx",
"recommendationReason": "Column \"<table>\".\"<column>\" appear in Equal Predicate clause(s) in query -555955670159268890;",
"recommendationType": "CreateIndex",
"resourceGroup": "<resource_group>",
"systemData": null,
"timesRecommended": 1,
"type": "Microsoft.DBforPostgreSQL/flexibleServers/tuningOptions/index"
},
{
.
.
.
}
]
لسرد جميع توصيات DROP INDEX، استخدم هذا الأمر:
az postgres flexible-server index-tuning list-recommendations \
--resource-group <resource_group> \
--server-name <server> \
--recommendation-type dropindex
يقوم الأمر بإرجاع جميع المعلومات حول توصيات DROP INDEX التي تم إنتاجها بواسطة ضبط الفهرس، مع إظهار شيء مشابه للإخراج التالي:
[
{
"analyzedWorkload": {
"endTime": "2025-02-26T19:02:47.522193+00:00",
"queryCount": 0,
"startTime": "2025-01-22T19:02:47.522193+00:00"
},
"details": {
"databaseName": "<database>",
"includedColumns": "",
"indexColumns": "<column>",
"indexName": "<index>",
"indexType": "BTREE",
"schema": "<schema>",
"table": "<table>"
},
"estimatedImpact": [
{
"absoluteValue": 35.0,
"dimensionName": "Benefit",
"queryId": null,
"unit": "Percentage"
},
{
"absoluteValue": 31.28125,
"dimensionName": "IndexSize",
"queryId": null,
"unit": "MB"
}
],
"id": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<server>/tuningOptions/index/recommendations/<recommendation_id>",
"implementationDetails": {
"method": "SQL",
"script": "drop index concurrently \"<schema>\".\"<index>\";"
},
"improvedQueryIds": null,
"initialRecommendedTime": "2025-02-26T19:02:47.556792+00:00",
"kind": "",
"lastRecommendedTime": "2025-02-26T19:02:47.556792+00:00",
"name": "DropIndex_<database>_<sechema>_<index>",
"recommendationReason": "Duplicate of \"<index>\". The equivalent index \"<index>\" has a shorter length compared to \"<index>\".",
"recommendationType": "DropIndex",
"resourceGroup": "<resource_group>",
"systemData": null,
"timesRecommended": 1,
"type": "Microsoft.DBforPostgreSQL/flexibleServers/tuningOptions/index"
}
]
استخدام أي أداة عميل PostgreSQL من تفضيلاتك:
الاتصال بقاعدة البيانات المتوفرة azure_sys في الخادم الخاص بك مع أي دور لديه إذن للاتصال بالمثيل.
public يمكن لأعضاء الدور القراءة من طرق العرض هذه.
تنفيذ الاستعلامات في sessions طريقة العرض لاسترداد التفاصيل حول جلسات عمل التوصية.
تنفيذ الاستعلامات في recommendations طريقة العرض لاسترداد التوصيات التي تم إنتاجها بواسطة ضبط الفهرس ل CREATE INDEX وDROP INDEX.
مرات العرض
توفر طرق العرض في azure_sys قاعدة البيانات طريقة ملائمة للوصول إلى توصيات الفهرس التي تم إنشاؤها بواسطة ضبط الفهرس واستردادها. على وجه التحديد، createindexrecommendations تحتوي طرق العرض و dropindexrecommendations على معلومات مفصلة حول توصيات CREATE INDEX و DROP INDEX، على التوالي. تعرض طرق العرض هذه بيانات مثل معرف جلسة العمل واسم قاعدة البيانات ونوع المستشار وأوقات بدء وإيقاف جلسة الضبط ومعرف التوصية ونوع التوصية وسبب التوصية والتفاصيل الأخرى ذات الصلة. يمكن للمستخدمين الاستعلام عن طرق العرض هذه، للوصول بسهولة إلى توصيات الفهرس التي ينتجها ضبط الفهرس وتحليلها.
sessions تعرض طريقة العرض جميع التفاصيل لجميع جلسات ضبط الفهرس.
| اسم العمود |
نوع البيانات |
وصف |
| session_id |
uuid |
المعرف الفريد العمومي المعين لكل جلسة ضبط جديدة يتم بدء تشغيلها. |
| database_name |
varchar(64) |
اسم قاعدة البيانات التي تم تنفيذ جلسة ضبط الفهرس في سياقها. |
| session_type |
intelligentperformance.recommendation_type |
يشير إلى أنواع التوصيات التي يمكن أن تنتجها جلسة ضبط الفهرس هذه. القيم المحتملة هي: CreateIndex، . DropIndex يمكن أن تنتج جلسات من CreateIndex النوع توصيات من CreateIndex النوع. يمكن أن تنتج جلسات العمل من DropIndex النوع توصيات أو DropIndexReIndex أنواع. |
| run_type |
intelligentperformance.recommendation_run_type |
يشير إلى الطريقة التي تم بها بدء هذه الجلسة. القيم المحتملة هي: Scheduled. يتم تعيين نوع index_tuning.analysis_intervalتشغيل لجلسات العمل التي يتم تنفيذها تلقائيا وفقا لقيمة Scheduled. |
| حالة |
intelligentperformance.recommendation_state |
يشير إلى الحالة الحالية لجلسة العمل. القيم المحتملة هي: Error، ، Success. InProgress يتم تعيين جلسات العمل التي فشل تنفيذها على أنها Error. يتم تعيين الجلسات التي أكملت تنفيذها بشكل صحيح، سواء كانت قد أنشأت توصيات أم لا، على أنها Success. يتم تعيين جلسات العمل التي لا تزال قيد التنفيذ على أنها InProgress. |
| start_time |
الطابع الزمني بدون المنطقة الزمنية |
الطابع الزمني الذي بدأت فيه جلسة الضبط التي أنتجت هذه التوصية. |
| stop_time |
الطابع الزمني بدون المنطقة الزمنية |
الطابع الزمني الذي بدأت فيه جلسة الضبط التي أنتجت هذه التوصية. NULL إذا كانت جلسة العمل قيد التقدم أو تم إجهاضها بسبب بعض الفشل. |
| recommendations_count |
العدد الصحيح |
إجمالي عدد التوصيات التي تم إنتاجها في هذه الدورة. |
recommendations تعرض طريقة العرض جميع التفاصيل لجميع التوصيات التي تم إنشاؤها على أي جلسة ضبط لا تزال بياناتها متوفرة في الجداول الأساسية.
| اسم العمود |
نوع البيانات |
وصف |
| recommendation_id |
العدد الصحيح |
الرقم الذي يحدد توصية في الخادم بأكمله بشكل فريد. |
| last_known_session_id |
uuid |
يتم تعيين معرف فريد عمومي لكل جلسة ضبط فهرس. تمثل القيمة الموجودة في هذا العمود قيمة جلسة العمل التي أنتجت هذه التوصية مؤخرا. |
| database_name |
varchar(64) |
اسم قاعدة البيانات التي تم إنتاج التوصية في سياقها. |
| recommendation_type |
intelligentperformance.recommendation_type |
يشير إلى نوع التوصية المنتجة. القيم المحتملة هي: CreateIndex، ، DropIndex. ReIndex |
| initial_recommended_time |
الطابع الزمني بدون المنطقة الزمنية |
الطابع الزمني الذي بدأت فيه جلسة الضبط التي أنتجت هذه التوصية. |
| last_recommended_time |
الطابع الزمني بدون المنطقة الزمنية |
الطابع الزمني الذي بدأت فيه جلسة الضبط التي أنتجت هذه التوصية. |
| times_recommended |
العدد الصحيح |
الطابع الزمني الذي بدأت فيه جلسة الضبط التي أنتجت هذه التوصية. |
| سبب |
نص |
سبب تبرير سبب إصدار هذه التوصية. |
| recommendation_context |
json |
يحتوي على قائمة معرفات الاستعلام للاستعلامات المتأثرة بالتوصية، ونوع الفهرس الموصى به، واسم المخطط واسم الجدول الذي يتم التوصية بالفهرس عليه، وأعمدة الفهرس، واسم الفهرس، والحجم المقدر بالبايت للفهرس الموصى به. |
أسباب إنشاء توصيات الفهرس
عندما يوصي ضبط الفهرس بإنشاء فهرس، فإنه يضيف أحد الأسباب التالية على الأقل:
| السبب |
Column <column> appear in Join On clause(s) in query <queryId> |
Column <column> appear in Equal Predicate clause(s) in query <queryId> |
Column <column> appear in Non-Equal Predicate clause(s) in query <queryId> |
Column <column> appear in Group By clause(s) in query <queryId> |
Column <column> appear in Order By clause(s) in query <queryId> |
أسباب توصيات مؤشر الإفلات
عندما يحدد ضبط الفهرس أي فهارس تم وضع علامة عليها على أنها غير صالحة، فإنه يقترح إسقاطها بالسبب التالي:
The index is invalid and the recommended recovery method is to reindex.
لمعرفة المزيد حول سبب ووقت وضع علامة على الفهارس على أنها غير صالحة، راجع الدالة REINDEX في الوثائق الرسمية ل PostgreSQL.
أسباب توصيات مؤشر الإفلات
عندما يكتشف ضبط الفهرس فهرسا غير مستخدم، على الأقل، عدد الأيام المعينة في index_tuning.unused_min_period، فإنه يقترح إسقاطه بالسبب التالي:
The index is unused in the past <days_unused> days.
عندما يكشف ضبط الفهرس عن الفهارس المكررة، فإن أحد التكرارات يبقى على قيد الحياة، ويقترح إسقاط الباقي. يحتوي السبب المقدم دائما على نص البدء التالي:
Duplicate of <surviving_duplicate>.
متبوعا بالنص الآخر الذي يشرح سبب اختيار كل تكرار للإفلات:
| السبب |
The equivalent index "<surviving_duplicate>" is a Primary key, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a unique index, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a constraint, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a valid index, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" has been chosen as replica identity, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" was used to cluster the table, while "<droppable_duplicate>" was not. |
The equivalent index "<surviving_duplicate>" has a smaller estimated size compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has more tuples compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has more index scans compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has been fetched more times compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has been read more times compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has a shorter length compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has a smaller oid compared to "<droppable_duplicate>". |
إذا لم يكن الفهرس قابلا للإزالة فقط بسبب التكرار، ولكن أيضا غير مستخدم لعدد الأيام المعينة في index_tuning.unused_min_period، يتم إلحاق النص التالي بالسبب:
Also, the index is unused in the past <days_unused> days.