A NoSQL-hez készült Azure Cosmos DB speciális diagnosztikai lekérdezéseivel kapcsolatos problémák elhárítása
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Ebben a cikkben részletesebb lekérdezéseket írunk az Azure Cosmos DB-fiók problémáinak elhárításához az Azure Diagnostics (örökölt) és erőforrás-specifikus (előzetes verzió) tábláknak küldött diagnosztikai naplók használatával.
Az Azure Diagnostics-táblák esetében a rendszer minden adatot egyetlen táblába ír. A felhasználók megadják, hogy melyik kategóriát szeretnék lekérdezni. Ha meg szeretné tekinteni a kérés teljes szöveges lekérdezését, tekintse meg az Azure Cosmos DB-adatok monitorozását az Azure diagnosztikai beállításaival, és ismerje meg, hogyan engedélyezheti ezt a funkciót.
Erőforrás-specifikus táblák esetében az adatok az erőforrás egyes kategóriáinak egyes tábláiba lesznek beírva. Ezt a módot javasoljuk, mert:
- Sokkal egyszerűbbé teszi az adatokkal való munkát.
- A sémák jobb felderíthetőségét biztosítja.
- Javítja a teljesítményt mind a betöltési késés, mind a lekérdezési idő tekintetében.
Gyakori lekérdezések
A gyakori lekérdezések az erőforrás-specifikus és az Azure Diagnostics-táblákban jelennek meg.
A kérelemegység (RU) felhasználása által egy adott időkeretben megrendelt leggyakoribb N(10) lekérdezések
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
A kérelmek szabályozottak (statusCode = 429) egy adott időablakban
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
A legnagyobb válaszhosszúságú lekérdezések (a kiszolgáló válaszának hasznos adatmérete)
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-felhasználás fizikai partíció szerint (a replikakészlet összes replikájában)
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-használat logikai partíció szerint (a replikakészlet összes replikájában)
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
Következő lépések
- További információ az Azure Cosmos DB diagnosztikai beállításainak létrehozásáról: Diagnosztikai beállítások létrehozása.
- Az Azure Portal, az Azure CLI vagy a PowerShell használatával történő diagnosztikai beállítások létrehozásáról a platformnaplók és metrikák Azure-beli gyűjtéséhez készült diagnosztikai beállítások létrehozása című témakörben olvashat.