Dela via


Indexeringsmått i Azure Cosmos DB

GÄLLER FÖR: NoSQL

Azure Cosmos DB tillhandahåller indexeringsmått för att visa både använda indexerade sökvägar och rekommenderade indexerade sökvägar. Du kan använda indexeringsmåtten för att optimera frågeprestanda, särskilt i fall där du inte är säker på hur du ändrar indexeringsprincipen).

SDK-versioner som stöds

Indexeringsmått stöds i följande SDK-versioner: | SDK | Versioner som stöds | | --- | --- | | .NET SDK v3 | >= 3.21.0 | | Java SDK v4 | >= 4.19.0 | | Python SDK | >= 4.6.0 |

Aktivera indexeringsmått

Du kan aktivera indexeringsmått för en fråga genom att ange PopulateIndexMetrics egenskapen till true. När det inte anges PopulateIndexMetrics är standardvärdet false. Vi rekommenderar bara att du aktiverar indexmåtten för felsökning av frågeprestanda. Så länge dina frågor och indexeringsprinciper förblir desamma kommer indexmåtten sannolikt inte att ändras. I stället rekommenderar vi att du identifierar dyra frågor genom att övervaka ru-avgifter och svarstider för frågor med hjälp av diagnostikloggar.

    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);
        }

Exempel på utdata

I den här exempelfrågan observerar vi de sökvägar /Item/? som används och /Price/? de potentiella sammansatta (/Item ASC, /Price ASC)indexen .

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
    ---

Använda indexerade sökvägar

De använda enskilda indexen respektive använda sammansatta index visar de inkluderade sökvägar och sammansatta index som frågan använde. Frågor kan använda flera indexerade sökvägar samt en blandning av inkluderade sökvägar och sammansatta index. Om en indexerad sökväg inte visas som utnyttjad påverkas inte frågans prestanda om du tar bort den indexerade sökvägen.

Överväg listan över använda indexerade sökvägar som bevis på att en fråga använde dessa sökvägar. Om du inte är säker på om en ny indexerad sökväg förbättrar frågeprestandan bör du prova att lägga till de nya indexerade sökvägarna och kontrollera om frågan använder dem.

Potentiella indexerade sökvägar

Potentiella enskilda index respektive potentiella sammansatta index visar de inkluderade sökvägarna och sammansatta index som frågan kan använda om de läggs till. Om du ser potentiella indexerade sökvägar bör du överväga att lägga till dem i indexeringsprincipen och se om de förbättrar frågeprestanda.

Överväg listan över potentiella indexerade sökvägar som rekommendationer i stället för avgörande bevis för att en fråga använder en specifik indexerad sökväg. De potentiella indexerade sökvägarna är inte en fullständig lista över indexerade sökvägar som en fråga kan använda. Dessutom är det möjligt att vissa potentiella indexerade sökvägar inte påverkar frågeprestanda. Lägg till de rekommenderade indexerade sökvägarna och bekräfta att de förbättrar frågeprestandan.

Kommentar

Har du någon feedback om indexeringsmåtten? Vi vill höra det! Dela gärna feedback direkt med Azure Cosmos DB-teknikteamet: cosmosdbindexing@microsoft.com

Indexpåverkanspoäng

Indexpåverkanspoängen är sannolikheten att en indexerad sökväg, baserat på frågeformen, har en betydande inverkan på frågeprestandan. Med andra ord motsvarar indexpåverkanspoängen sannolikheten att frågans RU-kostnad skulle ha varit betydligt högre utan den specifika indexerade sökvägen.

Det finns två möjliga indexpåverkanspoäng: hög och låg. Om du har flera potentiella indexerade sökvägar rekommenderar vi att du fokuserar på indexerade sökvägar med hög påverkan.

Det enda villkor som används i indexets effektpoäng är frågeformen. I frågan nedan tilldelas till exempel den indexerade sökvägen /name/? en hög indexpåverkanspoäng:

SELECT * 
FROM c
WHERE c.name = "Samer"

Den faktiska effekten beroende på datatypen. Om bara ett fåtal objekt matchar /name filtret kommer den indexerade sökvägen att avsevärt förbättra ru-avgiften för frågan. Men om de flesta objekt ändå matchar /name filtret kanske den indexerade sökvägen inte förbättrar frågeprestandan. I vart och ett av dessa fall skulle den indexerade sökvägen /name/? tilldelas en hög indexpåverkanspoäng eftersom den indexerade sökvägen, baserat på frågeformen, har hög sannolikhet att förbättra frågeprestandan.

Ytterligare exempel

Exempelfrågeställning

SELECT c.id 
FROM c 
WHERE c.name = 'Tim' AND c.age > 15 AND c.town = 'Redmond' AND c.timestamp > 2349230183

Indexmått

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
    ---

Dessa indexmått visar att frågan använde de indexerade sökvägarna /name/?, /age/?, /town/?och /timestamp/?. Indexmåtten indikerar också att det är hög sannolikhet att lägga till de sammansatta (/name ASC, /town ASC, /age ASC) indexen och (/name ASC, /town ASC, /timestamp ASC) ytterligare förbättra prestandan.

Nästa steg

Läs mer om indexering i följande artiklar: