Bagikan melalui


Metrik pengindeksan di Azure Cosmos DB

BERLAKU UNTUK: NoSQL

Azure Cosmos DB menyediakan metrik pengindeksan untuk menunjukkan baik jalur terindeks yang digunakan dan jalur terindeks yang direkomendasikan. Anda dapat menggunakan metrik pengindeksan untuk mengoptimalkan performa kueri, terutama dalam kasus di mana Anda tidak yakin cara memodifikasi kebijakan pengindeksan).

Versi SDK yang didukung

Metrik pengindeksan didukung dalam versi SDK berikut: | SDK | Versi yang didukung | | --- | --- | .NET SDK v3 | >= 3.21.0 | | Java SDK v4 | >= 4.19.0 | | Python SDK | >= 4.6.0 |

Mengaktifkan metrik pengindeksan

Anda dapat mengaktifkan metrik pengindeksan untuk kueri dengan mengatur properti PopulateIndexMetrics ke true. Ketika tidak ditentukan, PopulateIndexMetrics diatur default ke false. Kami hanya merekomendasikan untuk mengaktifkan metrik indeks untuk memecahkan masalah performa kueri. Selama permintaan dan kebijakan pengindeksan Anda tetap sama, metrik indeks tidak mungkin berubah. Sebagai gantinya, kami sarankan untuk mengidentifikasi kueri mahal dengan memantau biaya RU kueri dan latensi menggunakan log diagnostik.

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

Contoh output

Dalam contoh kueri ini, kami mengamati jalur yang digunakan /Item/? dan /Price/? serta indeks komposit potensial (/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
    ---

Jalur terindeks yang digunakan

Indeks tunggal yang digunakan dan indeks komposit yang digunakan masing-masing menunjukkan jalur yang disertakan dan indeks komposit yang digunakan kueri. Kueri dapat menggunakan beberapa jalur terindeks, serta campuran jalur yang disertakan dan indeks komposit. Jika jalur terindeks tidak terdaftar seperti yang digunakan, menghapus jalur terindeks tidak akan berdampak pada performa kueri.

Pertimbangkan daftar jalur terindeks yang digunakan sebagai bukti bahwa kueri menggunakan jalur tersebut. Jika Anda tidak yakin apakah jalur terindeks baru akan meningkatkan performa kueri, Anda harus mencoba menambahkan jalur terindeks baru dan memeriksa apakah kueri menggunakannya.

Jalur terindeks potensial

Indeks tunggal potensial dan indeks komposit potensial masing-masing menunjukkan jalur yang disertakan dan indeks komposit yang, jika ditambahkan, kueri mungkin digunakan. Jika Anda melihat jalur yang diindeks potensial, Anda harus mempertimbangkan untuk menambahkannya ke kebijakan pengindeksan Anda dan mengamati apakah mereka meningkatkan performa kueri.

Pertimbangkan daftar jalur terindeks potensial sebagai rekomendasi daripada bukti konklusif bahwa kueri akan menggunakan jalur terindeks tertentu. Jalur terindeks potensial bukanlah daftar lengkap jalur terindeks yang dapat digunakan kueri. Selain itu, ada kemungkinan bahwa beberapa jalur terindeks potensial tidak akan berdampak pada performa kueri. Tambahkan jalur terindeks yang direkomendasikan dan konfirmasikan bahwa mereka meningkatkan performa kueri.

Catatan

Apakah Anda memiliki tanggapan tentang metrik pengindeksan? Kami ingin mendengar pendapat Anda! Jangan ragu untuk berbagi umpan balik secara langsung dengan tim teknik Azure Cosmos DB: cosmosdbindexing@microsoft.com

Skor dampak indeks

Skor dampak indeks adalah kemungkinan bahwa jalur terindeks, berdasarkan bentuk kueri, memiliki dampak signifikan pada performa kueri. Dengan kata lain, skor dampak indeks adalah probabilitas bahwa, tanpa jalur terindeks tertentu, biaya RU kueri akan jauh lebih tinggi.

Ada dua kemungkinan skor dampak indeks: tinggi dan rendah. Jika Anda memiliki beberapa jalur terindeks potensial, kami sarankan untuk berfokus pada jalur terindeks dengan skor dampak tinggi.

Satu-satunya kriteria yang digunakan dalam skor dampak indeks adalah bentuk kueri. Misalnya, dalam kueri di bawah ini, jalur terindeks /name/? akan diberi skor dampak indeks tinggi:

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

Dampak sebenarnya tergantung pada sifat data. Jika hanya beberapa item yang cocok dengan filter /name, jalur terindeks akan secara substansial meningkatkan biaya RU kueri. Namun, jika sebagian besar item akhirnya cocok dengan filter /name, jalur terindeks mungkin tidak akan meningkatkan performa kueri. Dalam setiap kasus ini, jalur terindeks /name/? akan diberi skor dampak indeks tinggi karena, berdasarkan bentuk kueri, jalur terindeks memiliki kemungkinan tinggi untuk meningkatkan performa kueri.

Contoh tambahan

Kueri contoh

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

Metrik indeks

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

Metrik indeks ini menunjukkan bahwa kueri menggunakan jalur terindeks, /name/?, /age/?, /town/?, dan /timestamp/?. Metrik indeks juga menunjukkan bahwa ada kemungkinan besar bahwa menambahkan indeks komposit (/name ASC, /town ASC, /age ASC) dan (/name ASC, /town ASC, /timestamp ASC) akan lebih meningkatkan performa.

Langkah berikutnya

Baca selengkapnya tentang pengindeksan di artikel berikut ini: