Azure Cosmos DB'de ölçümleri dizinleme

UYGULANANLAR: NoSQL

Azure Cosmos DB, hem kullanılan dizinlenmiş yolları hem de önerilen dizine alınmış yolları göstermek için dizinleme ölçümleri sağlar. Özellikle dizin oluşturma ilkesini nasıl değiştireceğinizden emin olmadığınız durumlarda sorgu performansını iyileştirmek için dizin oluşturma ölçümlerini kullanabilirsiniz.

Desteklenen SDK sürümleri

Dizin oluşturma ölçümleri aşağıdaki SDK sürümlerinde desteklenir: | SDK | Desteklenen sürümler | | --- | --- | | .NET SDK v3 | >= 3.21.0 | | Java SDK v4 | >= 4.19.0 | | Python SDK'sı | >= 4.6.0 |

Dizin oluşturma ölçümlerini etkinleştirme

özelliğini trueolarak ayarlayarak PopulateIndexMetrics sorgu için dizin ölçümlerini etkinleştirebilirsiniz. Belirtilmediğinde, PopulateIndexMetrics varsayılan olarak olarak falsegösterilir. Yalnızca sorgu performansı sorunlarını gidermek için dizin ölçümlerini etkinleştirmenizi öneririz. Sorgularınız ve dizin oluşturma ilkeniz aynı kaldığı sürece dizin ölçümlerinin değişme olasılığı düşüktür. Bunun yerine, tanılama günlüklerini kullanarak sorgu RU ücretlerini ve gecikme süresini izleyerek pahalı sorguları tanımlamanızı öneririz.

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

Örnek çıkış

Bu örnek sorguda, kullanılan yolları /Item/? ve /Price/? olası bileşik dizinlerini (/Item ASC, /Price ASC)gözlemleyeceğiz.

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

Kullanılan dizinli yollar

Kullanılan tek dizinler ve kullanılan bileşik dizinler sırasıyla sorgunun kullandığı eklenen yolları ve bileşik dizinleri gösterir. Sorgular, birden çok dizinli yolun yanı sıra eklenen yollar ile bileşik dizinlerin bir karışımını kullanabilir. Dizine alınmış bir yol kullanıldı olarak listelenmiyorsa, dizine alınan yolun kaldırılması sorgunun performansını etkilemez.

Kullanılan dizine alınmış yolların listesini, sorgunun bu yolları kullandığını gösteren bir kanıt olarak düşünün. Yeni bir dizinli yolun sorgu performansını geliştirip geliştirmediğinden emin değilseniz, yeni dizine alınan yolları eklemeyi denemeli ve sorgunun bunları kullanıp kullanmayacağını denetlemeniz gerekir.

Olası dizinli yollar

Olası tek dizinler ve olası bileşik dizinler sırasıyla eklenen yolları ve eklendiğinde sorgunun kullanabileceği bileşik dizinleri gösterir. Olası dizinlenmiş yollar görüyorsanız, bunları dizin oluşturma ilkenize eklemeyi ve sorgu performansını geliştirip geliştirmediklerini gözlemlemeniz gerekir.

Olası dizinli yolların listesini, bir sorgunun belirli bir dizinlenmiş yolu kullanacağının kesin kanıtı yerine öneriler olarak düşünün. Olası dizinli yollar, bir sorgunun kullanabileceği dizinli yolların kapsamlı bir listesi değildir. Ayrıca, bazı olası dizinli yolların sorgu performansı üzerinde herhangi bir etkisi olmaz. Önerilen dizine alınan yolları ekleyin ve sorgu performansını artırdıklarını onaylayın.

Not

Dizin oluşturma ölçümleri hakkında geri bildiriminiz var mı? Duymak istiyoruz! Geri bildirimleri doğrudan Azure Cosmos DB mühendislik ekibiyle paylaşmaktan çekinmeyin: cosmosdbindexing@microsoft.com

Dizin etki puanı

Dizin etki puanı, sorgu şeklini temel alan dizine alınan bir yolun sorgu performansı üzerinde önemli bir etkiye sahip olma olasılığıdır. Başka bir deyişle, dizin etki puanı, bu belirli dizinli yol olmadan sorgu RU ücretinin önemli ölçüde daha yüksek olma olasılığıdır.

İki olası dizin etkisi puanı vardır: yüksek ve düşük. Birden çok olası dizinli yolunuz varsa, yüksek etki puanına sahip dizinli yollara odaklanmanızı öneririz.

Dizin etki puanında kullanılan tek ölçüt sorgu şeklidir. Örneğin, aşağıdaki sorguda dizine alınan yola /name/? yüksek bir dizin etki puanı atanır:

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

Verilerin doğasına bağlı olarak gerçek etki. Filtreyle /name yalnızca birkaç öğe eşleşiyorsa, dizine alınan yol sorgu RU ücretini önemli ölçüde artırır. Ancak çoğu öğe yine de filtreyle /name eşleşiyorsa, dizine alınan yol sorgu performansını artırmayabilir. Bu durumların her birinde, dizine alınan yola /name/? yüksek bir dizin etki puanı atanır çünkü sorgu şeklini temel alan dizine alınan yolun sorgu performansını artırma olasılığı yüksektir.

Ek örnekler

Örnek sorgu

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

Dizin ölçümleri

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

Bu dizin ölçümleri, sorgunun dizine alınan yolları /name/?, , /age/?/town/?ve /timestamp/?kullandığını gösterir. Dizin ölçümleri ayrıca bileşik dizinleri (/name ASC, /town ASC, /age ASC) ekleme olasılığının yüksek olduğunu ve (/name ASC, /town ASC, /timestamp ASC) performansı daha da geliştireceğini gösterir.

Sonraki adımlar

Dizin oluşturma hakkında daha fazla bilgiyi aşağıdaki makalelerde bulabilirsiniz: