Mevcut bir sunucudaki dizin ayarlama işlemiyle oluşturulan önerileri, az postgres flexible-server index-tuning list-recommendations komutu aracılığıyla listeleyebilirsiniz.
Tüm CREATE INDEX önerilerini listelemek için şu komutu kullanın:
az postgres flexible-server index-tuning list-recommendations \
--resource-group <resource_group> \
--server-name <server> \
--recommendation-type createindex
Komut, dizin ayarlama tarafından oluşturulan "CREATE INDEX" önerileriyle ilgili tüm bilgileri döndürür ve aşağıdaki çıktıya benzer bir sonuç gösterir:
[
{
"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"
},
{
.
.
.
}
]
Tüm DROP INDEX önerilerini listelemek için şu komutu kullanın:
az postgres flexible-server index-tuning list-recommendations \
--resource-group <resource_group> \
--server-name <server> \
--recommendation-type dropindex
Komut, dizin ayarlaması tarafından üretilen DROP INDEX önerileriyle ilgili tüm bilgileri döndürür ve bununla ilgili olarak aşağıdaki benzer bir çıktıyı gösterir.
[
{
"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"
}
]
Tercihinize göre herhangi bir PostgreSQL istemci aracını kullanma:
Sunucunuzda bulunan azure_sys veritabanına erişim izni olan herhangi bir rolle bağlanın. Rolün public üyeleri bu görünümlerden okuyabilir.
Görünümde sorguları çalıştırarak öneri oturumlarıyla ilgili ayrıntıları alabilirsiniz.
CREATE INDEX ve DROP INDEX için dizin ayarlaması tarafından üretilen önerileri almak amacıyla recommendations görünüm üzerinde sorgular yürütün.
İzlenimler
Veritabanındaki azure_sys görünümler, dizin ayarlama tarafından oluşturulan dizin önerilerine kolay ve elverişli bir şekilde erişmek ve elde etmek için tasarlanmıştır. Özellikle, şu createindexrecommendations ve dropindexrecommendations görünümleri sırasıyla CREATE INDEX ve DROP INDEX önerileri hakkında ayrıntılı bilgiler içerir. Bu görünümler oturum kimliği, veritabanı adı, danışman türü, ayarlama oturumunun başlangıç ve durdurma süreleri, öneri kimliği, öneri türü, öneri nedeni ve diğer ilgili ayrıntılar gibi verileri kullanıma sunar. Dizin ayarlama ile üretilen dizin önerilerine kolayca erişmek ve analiz etmek için kullanıcılar bu görünümleri sorgulayabilir.
Görünüm, tüm dizin ayarlama oturumları için tüm ayrıntıları gözler önüne serer.
| sütun adı |
veri tipi |
Description |
| session_id |
UUID (evrensel benzersiz tanımlayıcı) |
Başlatılan her yeni ayarlama oturumuna atanan Genel Benzersiz Tanımlayıcı. |
| veritabanı_adı |
varchar(64) |
Dizin ayarlama oturumunun yürütüldiği bağlamda veritabanının adı. |
| oturum_türü |
akıllıperformans.öneri_türü |
Bu dizin ayarlama oturumunun üretebileceği öneri türlerini gösterir. Olası değerler şunlardır: CreateIndex, DropIndex.
CreateIndex türündeki oturumlar, CreateIndex türünde öneriler üretebilir.
DropIndex türündeki oturumlar, DropIndex veya ReIndex türlerinde öneriler üretebilir. |
| çalışma_türü |
intelligentperformans.öneri_çalışma_tipi |
Bu oturumun nasıl başlatıldığını gösterir. Olası değerler şunlardır: Scheduled. değerine index_tuning.analysis_intervalgöre otomatik olarak yürütülen oturumlara çalıştırma türü Scheduledatanır. |
| state |
akıllıperformans.öneri_durumu |
Oturumun geçerli durumunu gösterir. Olası değerler şunlardır: Error, Success, InProgress. Yürütmesi başarısız olan oturumlar olarak Errorayarlanır. Yürütmelerini doğru bir şekilde tamamlayan oturumlar, öneriler oluşturup oluşturmadıklarına bakılmaksızın Success olarak ayarlanır. Hala yürütülmekte olan oturumlar olarak InProgressayarlanır. |
| başlangıç zamanı |
zaman dilimi olmayan zaman damgası |
Bu öneriyi üreten ayarlama oturumunun başlatıldığı tarih/saat bilgisi. |
| durdurma_zamanı |
zaman dilimi olmayan zaman damgası |
Bu öneriyi üreten ayarlama oturumunun başlatıldığı tarih/saat bilgisi. Oturum devam ediyorsa veya bir hata nedeniyle durdurulduysa NULL. |
| Öneri Sayısı |
tamsayı |
Bu oturumda oluşturulan toplam öneri sayısı. |
Görünüm, recommendations verileri temel alınan tablolarda hala kullanılabilir olan herhangi bir ayarlama oturumunda oluşturulan tüm önerilerin tüm ayrıntılarını gösterir.
| sütun adı |
veri tipi |
Description |
| öneri_kodu |
tamsayı |
Sunucunun tamamında bir öneriyi benzersiz olarak tanımlayan sayı. |
| son_bilinir_oturum_kimliği |
UUID (evrensel benzersiz tanımlayıcı) |
Her dizin ayarlama oturumuna Genel Benzersiz Tanımlayıcı atanır. Bu sütundaki değer, bu öneriyi en son oluşturan oturumu temsil eder. |
| veritabanı_adı |
varchar(64) |
Bağlamı önerinin oluşturulduğu veritabanının adı. |
| öneri_tipi |
akıllıperformans.öneri_türü |
Oluşturulan önerinin türünü gösterir. Olası değerler şunlardır: CreateIndex, DropIndex, ReIndex. |
| ilk önerilen zaman |
zaman dilimi olmayan zaman damgası |
Bu öneriyi üreten ayarlama oturumunun başlatıldığı tarih/saat bilgisi. |
| son_önerilen_zaman |
zaman dilimi olmayan zaman damgası |
Bu öneriyi üreten ayarlama oturumunun başlatıldığı tarih/saat bilgisi. |
| önerilme_sayısı |
tamsayı |
Bu öneriyi üreten ayarlama oturumunun başlatıldığı tarih/saat bilgisi. |
| sebep |
Başka bir metin sağlanmadığı için, verilen metne dayalı bir çeviri yapmam mümkün değil. Lütfen çevirilecek metni belirtin. |
Bu önerinin neden oluşturulduğuna ilişkin gerekçe. |
| öneri bağlamı |
JSON |
Öneriden etkilenen sorguların sorgu tanımlayıcılarının listesini, önerilen dizinin türünü, şemanın adını ve dizinin önerildiği tablonun adını, dizin sütunlarını, dizin adını ve önerilen dizinin bayt cinsinden tahmini boyutunu içerir. |
Dizin oluşturma önerilerinin nedenleri
Dizin ayarlaması bir dizinin oluşturulmasını önerdiğinde, aşağıdaki nedenlerden en az birini ekler:
| Reason |
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> |
İndeks silme önerilerinin sebepleri
Dizin ayarlaması, geçersiz olarak işaretlenmiş dizinleri tanımladığında, kaldırmayı aşağıdaki nedenle önerir:
The index is invalid and the recommended recovery method is to reindex.
Dizinlerin neden ve ne zaman geçersiz olarak işaretleneceği hakkında daha fazla bilgi edinmek için PostgreSQL'de REINDEX resmi belgelerine bakın.
İndeks silme önerilerinin sebepleri
Dizin ayarlama, en azından index_tuning.unused_min_period içinde ayarlanan gün sayısı kadar kullanılmayan bir dizini algıladığında, aşağıdaki nedenle kaldırmayı önerir:
The index is unused in the past <days_unused> days.
Dizin ayarlama yinelenen dizinleri algıladığında, yalnızca biri korunur ve diğerinin düşürülmesi önerilir. Sağlanan neden her zaman aşağıdaki başlangıç metnine sahiptir:
Duplicate of <surviving_duplicate>.
Ardından, yinelenenlerin her birinin kaldırma için seçilmesinin nedenini açıklayan başka bir metin daha yer aldı.
| Reason |
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>". |
Dizin, sadece yineleme nedeniyle çıkarılabilir değil, aynı zamanda en azından index_tuning.unused_min_period içinde ayarlanan gün sayısı boyunca kullanılmamışsa, nedene aşağıdaki metin eklenir:
Also, the index is unused in the past <days_unused> days.