Share via


NoSQL için Azure Cosmos DB ile gelişmiş tanılama sorgularıyla ilgili sorunları giderme

ŞUNUN IÇIN GEÇERLIDIR: NoSQL

Bu makalede, Azure Tanılama (eski) ve kaynağa özgü (önizleme) tablolara gönderilen tanılama günlüklerini kullanarak Azure Cosmos DB hesabınızla ilgili sorunları gidermeye yardımcı olmak için daha gelişmiş sorgular yazmayı ele alacağız.

Azure Tanılama tablolarda tüm veriler tek bir tabloya yazılır. Kullanıcılar sorgulamak istedikleri kategoriyi belirtir. İsteğinizin tam metin sorgusunu görüntülemek istiyorsanız bu özelliğin nasıl etkinleştirileceği hakkında bilgi edinmek için bkz. Azure'da tanılama ayarlarını kullanarak Azure Cosmos DB verilerini izleme .

Kaynağa özgü tablolar için veriler, kaynağın her kategorisi için tek tek tablolara yazılır. Şu nedenle bu modu öneririz:

  • Verilerle çalışmayı çok daha kolay hale getirir.
  • Şemaların daha iyi bulunabilirliğini sağlar.
  • Hem alma gecikme süresi hem de sorgu sürelerinde performansı artırır.

Yaygın sorgular

Kaynağa özgü ve Azure Tanılama tablolarında yaygın sorgular gösterilir.

Belirli bir zaman diliminde İstek Birimi (RU) tüketimine göre sıralanmış en fazla N(10) sorgu

let topRequestsByRUcharge = CDBDataPlaneRequests 
| where TimeGenerated > ago(24h)
| project  RequestCharge , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , QueryText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10

Belirli bir zaman penceresinde kısıtlanan istekler (statusCode = 429)

let throttledRequests = CDBDataPlaneRequests
| where StatusCode == "429"
| project  OperationName , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , QueryText , OperationName, TimeGenerated

En büyük yanıt uzunluklarına sahip sorgular (sunucu yanıtının yük boyutu)

let operationsbyUserAgent = CDBDataPlaneRequests
| project OperationName, DurationMs, RequestCharge, ResponseLength, ActivityId;
CDBQueryRuntimeStatistics
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by QueryText
| order by max_ResponseLength desc

Fiziksel bölüme göre RU tüketimi (çoğaltma kümesindeki tüm çoğaltmalar arasında)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart

Mantıksal bölüme göre RU tüketimi (çoğaltma kümesindeki tüm çoğaltmalarda)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart  

Sonraki adımlar