Sdílet prostřednictvím


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 truehodnotu . Pokud není zadáno, PopulateIndexMetrics použije se falsevý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: