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:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk