Partager via


Résolvez les problèmes liés aux requêtes de diagnostic avancées avec Azure Cosmos DB for NoSQL.

S’APPLIQUE À : NoSQL

Dans cet article, nous allons voir comment écrire des requêtes plus avancées pour vous aider à résoudre les problèmes de votre compte Azure Cosmos DB en utilisant les journaux de diagnostic envoyés aux tables Diagnostics Azure (hérité) et spécifiques aux ressources.

Pour les tables Diagnostics Azure, toutes les données sont écrites dans une seule table. Les utilisateurs spécifient la catégorie qu’ils veulent interroger. Si vous souhaitez voir la requête de texte intégral de votre requête, consultez Superviser les données Azure Cosmos DB en utilisant des paramètres de diagnostic dans Azure pour savoir comment activer cette fonctionnalité.

Pour les tables spécifiques aux ressources, les données sont écrites dans des tables individuelles pour chaque catégorie de la ressource. Nous recommandons ce mode parce qu’il :

  • Facilite beaucoup l’utilisation des données
  • Offre une meilleure découvrabilité des schémas
  • Améliore les performances au niveau de la latence d’ingestion et des délais de requêtes

Requêtes courantes

Les requêtes courantes sont affichées dans les tables spécifiques aux ressources et Diagnostics Azure.

Top N(10) des requêtes classées par consommation d’unités de requête (RU) dans une fenêtre de temps spécifique

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

Requêtes limitées (statusCode = 429) dans une fenêtre de temps spécifique

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

Requêtes avec les réponses les plus longues (taille du contenu de la réponse du serveur)

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

Consommation de RU par partition physique (sur tous les réplicas du jeu de réplicas)

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

Consommation de RU par partition logique (sur tous les réplicas du jeu de réplicas)

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  

Étapes suivantes