Felsöka problem med avancerade diagnostikfrågor med Azure Cosmos DB för NoSQL
GÄLLER FÖR: NoSQL
I den här artikeln går vi igenom hur du skriver mer avancerade frågor för att felsöka problem med ditt Azure Cosmos DB-konto med hjälp av diagnostikloggar som skickas till Azure Diagnostics-tabeller (äldre) och resursspecifika tabeller (förhandsversion).
För Azure Diagnostics-tabeller skrivs alla data till en enda tabell. Användare anger vilken kategori de vill fråga efter. Om du vill visa frågan i fulltext i din begäran kan du läsa Övervaka Azure Cosmos DB-data med hjälp av diagnostikinställningar i Azure för att lära dig hur du aktiverar den här funktionen.
För resursspecifika tabeller skrivs data till enskilda tabeller för varje kategori av resursen. Vi rekommenderar det här läget eftersom det:
- Gör det mycket enklare att arbeta med data.
- Ger bättre identifiering av scheman.
- Förbättrar prestanda för både svarstid för inmatning och frågetider.
Vanliga frågor
Vanliga frågor visas i de resursspecifika tabellerna och Azure Diagnostics-tabellerna.
De översta N(10) frågorna ordnade efter RU-förbrukning (Request Unit) inom en viss tidsram
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
Begäranden begränsades (statusCode = 429) i ett specifikt tidsfönster
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
Frågor med de största svarslängderna (nyttolaststorlek för serversvaret)
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-förbrukning efter fysisk partition (över alla repliker i replikuppsättningen)
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-förbrukning efter logisk partition (över alla repliker i replikuppsättningen)
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
Nästa steg
- Mer information om hur du skapar diagnostikinställningar för Azure Cosmos DB finns i Skapa diagnostikinställningar.
- Detaljerad information om hur du skapar en diagnostikinställning med hjälp av Azure Portal, Azure CLI eller PowerShell finns i Skapa diagnostikinställningar för att samla in plattformsloggar och mått i Azure.