Problemen met geavanceerde diagnostische query's oplossen met Azure Cosmos DB for NoSQL
VAN TOEPASSING OP: NoSQL
In dit artikel wordt beschreven hoe u geavanceerdere query's schrijft om problemen met uw Azure Cosmos DB-account op te lossen met behulp van diagnostische logboeken die worden verzonden naar Azure Diagnostics-tabellen (verouderd) en resourcespecifieke tabellen (preview).
Voor Azure Diagnostics-tabellen worden alle gegevens in één tabel geschreven. Gebruikers geven op welke categorie ze een query willen uitvoeren. Als u de volledige-tekstquery van uw aanvraag wilt bekijken, raadpleegt u Azure Cosmos DB-gegevens bewaken met behulp van diagnostische instellingen in Azure voor meer informatie over het inschakelen van deze functie.
Voor resourcespecifieke tabellen worden gegevens voor elke categorie van de resource in afzonderlijke tabellen geschreven. We raden deze modus aan omdat deze:
- Maakt het veel eenvoudiger om met de gegevens te werken.
- Biedt een betere zichtbaarheid van de schema's.
- Verbetert de prestaties voor zowel opnamelatentie als querytijden.
Algemene query's
Algemene query's worden weergegeven in de resourcespecifieke en Diagnostische azure-tabellen.
Belangrijkste N(10) query's die zijn gesorteerd op RU-verbruik (Request Unit) in een bepaald tijdsbestek
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
Aanvragen beperkt (statusCode = 429) in een bepaald tijdvenster
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
Query's met de grootste antwoordlengte (nettoladinggrootte van het serverantwoord)
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
RU-verbruik per fysieke partitie (voor alle replica's in de replicaset)
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
RU-verbruik per logische partitie (voor alle replica's in de replicaset)
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
Volgende stappen
- Zie Diagnostische instellingen maken voor Azure Cosmos DB voor meer informatie over het maken van diagnostische instellingen.
- Zie Diagnostische instellingen maken om platformlogboeken en metrische gegevens in Azure te verzamelen voor gedetailleerde informatie over het maken van een diagnostische instelling met behulp van Azure Portal, de Azure CLI of PowerShell.