Megosztás:


Metrikák indexelése az Azure Cosmos DB-ben

Az Azure Cosmos DB indexelési metrikákat biztosít a használt indexelt útvonalak és az ajánlott indexelt útvonalak megjelenítéséhez. Az indexelési metrikák használatával optimalizálhatja a lekérdezési teljesítményt, különösen olyan esetekben, amikor nem tudja biztosan, hogyan módosíthatja az indexelési szabályzatot).

Támogatott SDK-verziók

Az indexelési metrikák a következő SDK-verziókban támogatottak: | SDK | Támogatott verziók | | --- | --- | | .NET SDK v3 | >= 3.21.0 | Java SDK v4 | >= 4.19.0 | Python SDK | >= 4.6.0 |

Indexelési metrikák engedélyezése

A lekérdezéshez az indexelési metrikákat úgy engedélyezheti, ha a PopulateIndexMetrics tulajdonságot true beállítja. Ha nincs megadva, PopulateIndexMetrics az alapértelmezett érték a .false Csak az indexmetrikák engedélyezését javasoljuk a lekérdezési teljesítmény hibaelhárításához. Amíg a lekérdezések és az indexelési szabályzatok változatlanok maradnak, az indexmetrikák nem változnak. Ehelyett javasoljuk a drága lekérdezések azonosítását a lekérdezési RU egységek díjainak és késleltetésének diagnosztikai naplókkal történő monitorozásával.

    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élda kimenet

Ebben a példalekérdezésben a használt útvonalakat /Item/? és /Price/? a lehetséges összetett indexeket (/Item ASC, /Price ASC)figyeljük meg.

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

Használt indexelt elérési utak

A használt önálló indexek és a használt összetett indexek a lekérdezés által használt elérési utakat és összetett indexeket mutatják. A lekérdezések több indexelt elérési utat, valamint a belefoglalt útvonalak és az összetett indexek kombinációját is használhatják. Ha egy indexelt elérési út nem szerepel használatban, az indexelt elérési út eltávolítása nem befolyásolja a lekérdezés teljesítményét.

A használt indexelt elérési utak listáját tekintheti annak bizonyítékaként, hogy egy lekérdezés használta ezeket az útvonalakat. Ha nem biztos abban, hogy egy új indexelt elérési út javítja-e a lekérdezés teljesítményét, próbálja meg hozzáadni az új indexelt elérési utakat, és ellenőrizze, hogy a lekérdezés használja-e őket.

Lehetséges indexelt útvonalak

A lehetséges önálló indexek és a lehetséges összetett indexek a belefoglalt elérési utakat és az összetett indexeket mutatják, amelyeket hozzáadva a lekérdezés hasznosíthat. Ha potenciális indexelt elérési utakat lát, érdemes lehet hozzáadni őket az indexelési szabályzathoz, és megfigyelni, hogy javítják-e a lekérdezési teljesítményt.

A lehetséges indexelt útvonalak listáját érdemes javaslatnak tekinteni, nem pedig annak meggyőző bizonyítékát, hogy egy lekérdezés egy adott indexelt elérési utat fog használni. A lehetséges indexelt útvonalak nem az indexelt elérési utak teljes listája, amelyeket a lekérdezések használhatnak. Emellett előfordulhat, hogy egyes indexelt útvonalak nem befolyásolják a lekérdezés teljesítményét. Adja hozzá az ajánlott indexelt elérési utakat , és győződjön meg arról, hogy javítják a lekérdezési teljesítményt.

Megjegyzés:

Van visszajelzése az indexelési metrikákról? Hallani akarjuk! Nyugodtan megoszthatja visszajelzéseit közvetlenül az Azure Cosmos DB mérnöki csapatával: cosmosdbindexing@microsoft.com

Indexhatási pontszám

Az index hatáspontszáma annak a valószínűsége, hogy egy indexelt elérési út a lekérdezési alakzaton alapul, jelentős hatással van a lekérdezési teljesítményre. Más szóval az index hatáspontszáma annak a valószínűsége, hogy az adott indexelt elérési út nélkül a lekérdezés RU-díja lényegesen magasabb lett volna.

Az index hatásának két lehetséges pontszáma lehet: magas és alacsony. Ha több lehetséges indexelt útvonallal rendelkezik, javasoljuk, hogy a magas hatáspontszámú indexelt útvonalakra összpontosítson.

Az egyetlen tényező, amelyet az index hatáspontszámában használnak, a lekérdezés formája. Az alábbi lekérdezésben például az indexelt elérési út /name/?magas indexhatási pontszámot kap:

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

Az adatok jellegétől függően a tényleges hatás. Ha csak néhány elem felel meg a /name szűrőnek, az indexelt elérési út jelentősen javítja a lekérdezés RU-díját. Ha azonban a legtöbb elem mégis megfelel a /name szűrőnek, előfordulhat, hogy az indexelt elérési út nem javítja a lekérdezés teljesítményét. Minden ilyen esetben az indexelt elérési út /name/?magas indexhatási pontszámot kap, mert a lekérdezési alakzat alapján az indexelt elérési út nagy valószínűséggel javítja a lekérdezés teljesítményét.

További példák

Példa lekérdezés

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

Indexmetrikák

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

Ezek az indexmetrikák azt mutatják, hogy a lekérdezés az indexelt elérési utakat /name/?, /age/?, /town/?, és /timestamp/? használta. Az indexmetrikák azt is jelzik, hogy nagy a valószínűsége annak, hogy hozzáadja az összetett indexeket (/name ASC, /town ASC, /age ASC) , és (/name ASC, /town ASC, /timestamp ASC) tovább javítja a teljesítményt.

Következő lépések

További információ az indexelésről az alábbi cikkekben: