Metriky indexování ve službě Azure Cosmos DB
PLATÍ PRO: NoSQL
Azure Cosmos DB poskytuje metriky indexování, které zobrazují využívané indexované cesty i doporučené indexované cesty. Metriky indexování můžete použít k optimalizaci výkonu dotazů, zejména v případech, kdy si nejste jistí, jak upravit zásady indexování).
Podporované verze sady SDK
Metriky indexování jsou podporovány v následujících verzích sady SDK: | SDK | Podporované verze | | --- | --- | | .NET SDK v3 | >= 3.21.0 | | Java SDK v4 | >= 4.19.0 | | Python SDK | >= 4.6.0 |
Povolení metrik indexování
Metriky indexování pro dotaz můžete povolit nastavením PopulateIndexMetrics
vlastnosti na true
hodnotu . Pokud není zadáno, PopulateIndexMetrics
použije se false
výchozí hodnota . Doporučujeme povolit pouze metriky indexu pro řešení potíží s výkonem dotazů. Pokud vaše dotazy a zásady indexování zůstanou stejné, metriky indexu se pravděpodobně nezmění. Místo toho doporučujeme identifikovat nákladné dotazy monitorováním poplatků za RU a latencí dotazů pomocí diagnostických protokolů.
string sqlQueryText = "SELECT TOP 10 c.id FROM c WHERE c.Item = 'value1234' AND c.Price > 2";
QueryDefinition query = new QueryDefinition(sqlQueryText);
FeedIterator<Item> resultSetIterator = container.GetItemQueryIterator<Item>(
query, requestOptions: new QueryRequestOptions
{
PopulateIndexMetrics = true
});
FeedResponse<Item> response = null;
while (resultSetIterator.HasMoreResults)
{
response = await resultSetIterator.ReadNextAsync();
Console.WriteLine(response.IndexMetrics);
}
Příklad výstupu
V tomto příkladu dotazu sledujeme využité cesty /Item/?
a /Price/?
potenciální složené indexy (/Item ASC, /Price ASC)
.
Index Utilization Information
Utilized Single Indexes
Index Spec: /Item/?
Index Impact Score: High
---
Index Spec: /Price/?
Index Impact Score: High
---
Potential Single Indexes
Utilized Composite Indexes
Potential Composite Indexes
Index Spec: /Item ASC, /Price ASC
Index Impact Score: High
---
Využité indexované cesty
Využité jednotlivé indexy a využité složené indexy zobrazují zahrnuté cesty a složené indexy, které dotaz použil. Dotazy můžou používat více indexovaných cest a také kombinaci zahrnutých cest a složených indexů. Pokud indexovaná cesta není uvedená jako využitá, odebrání indexované cesty nebude mít žádný vliv na výkon dotazu.
Představte si seznam využitých indexovaných cest jako důkaz, že dotaz tyto cesty použil. Pokud si nejste jistí, jestli nová indexovaná cesta zlepší výkon dotazů, měli byste zkusit přidat nové indexované cesty a zkontrolovat, jestli je dotaz používá.
Potenciální indexované cesty
Potenciální jednotlivé indexy a potenciální složené indexy zobrazují zahrnuté cesty a složené indexy, které by dotaz při přidání mohl využít. Pokud se zobrazí potenciální indexované cesty, měli byste zvážit jejich přidání do zásad indexování a sledovat, jestli zlepšují výkon dotazů.
Zvažte seznam potenciálních indexovaných cest jako doporučení, nikoli jako přesvědčivé důkazy, že dotaz použije konkrétní indexovanou cestu. Potenciální indexované cesty nejsou vyčerpávajícím seznamem indexovaných cest, které by dotaz mohl použít. Kromě toho je možné, že některé potenciální indexované cesty nebudou mít žádný vliv na výkon dotazů. Přidejte doporučené indexované cesty a ověřte, že zlepšují výkon dotazů.
Poznámka:
Máte nějaké připomínky k metrikám indexování? Chceme to slyšet! Svůj názor můžete sdílet přímo s technickým týmem služby Azure Cosmos DB: cosmosdbindexing@microsoft.com
Skóre dopadu indexu
Skóre dopadu indexu je pravděpodobnost, že indexovaná cesta založená na tvaru dotazu má významný vliv na výkon dotazů. Jinými slovy, skóre dopadu indexu je pravděpodobnost, že bez této konkrétní indexované cesty by poplatky za RU dotazu byly podstatně vyšší.
Existují dvě možná skóre dopadu na index: vysoké a nízké. Pokud máte více potenciálních indexovaných cest, doporučujeme zaměřit se na indexované cesty s vysokým skóre dopadu.
Jedinými kritérii použitými ve skóre dopadu indexu je tvar dotazu. Například v následujícím dotazu by se indexované cestě /name/?
přiřadilo vysoké skóre dopadu indexu:
SELECT *
FROM c
WHERE c.name = "Samer"
Skutečný dopad závisí na povaze dat. Pokud filtr odpovídá /name
jenom několika položkám, indexovaná cesta výrazně zlepší poplatky za RU dotazu. Pokud ale většina položek skončí shodným s filtrem /name
, indexovaná cesta nemusí skončit se zlepšením výkonu dotazů. V každém z těchto případů by se indexované cestě /name/?
přiřadilo vysoké skóre dopadu indexu, protože na základě obrazce dotazu má indexovaná cesta vysokou pravděpodobnost zlepšení výkonu dotazů.
Další příklady
Ukázkový dotaz
SELECT c.id
FROM c
WHERE c.name = 'Tim' AND c.age > 15 AND c.town = 'Redmond' AND c.timestamp > 2349230183
Metriky indexu
Index Utilization Information
Utilized Single Indexes
Index Spec: /name/?
Index Impact Score: High
---
Index Spec: /age/?
Index Impact Score: High
---
Index Spec: /town/?
Index Impact Score: High
---
Index Spec: /timestamp/?
Index Impact Score: High
---
Potential Single Indexes
Utilized Composite Indexes
Potential Composite Indexes
Index Spec: /name ASC, /town ASC, /age ASC
Index Impact Score: High
---
Index Spec: /name ASC, /town ASC, /timestamp ASC
Index Impact Score: High
---
Tyto metriky indexu ukazují, že dotaz použil indexované cesty /name/?
, /age/?
, /town/?
a /timestamp/?
. Metriky indexu také ukazují, že je vysoká pravděpodobnost, že se přidají složené indexy (/name ASC, /town ASC, /age ASC)
a (/name ASC, /town ASC, /timestamp ASC)
zvýší se výkon.
Další kroky
Další informace o indexování najdete v následujících článcích: