Řešení potíží s pokročilými diagnostickými dotazy ve službě Azure Cosmos DB for NoSQL
PLATÍ PRO: NoSQL
V tomto článku se budeme zabývat tím, jak napsat pokročilejší dotazy, které vám pomůžou řešit problémy s účtem služby Azure Cosmos DB pomocí diagnostických protokolů odesílaných do tabulek Azure Diagnostics (starší verze) a tabulek specifických pro prostředky (Preview).
V případě tabulek Azure Diagnostics se všechna data zapisuje do jedné tabulky. Uživatelé určují, do které kategorie se mají dotazovat. Pokud chcete zobrazit fulltextový dotaz požadavku, přečtěte si téma Monitorování dat služby Azure Cosmos DB pomocí nastavení diagnostiky v Azure a zjistěte, jak tuto funkci povolit.
U tabulek specifických pro prostředky se data zapisují do jednotlivých tabulek pro každou kategorii prostředku. Tento režim doporučujeme, protože:
- Usnadňuje práci s daty.
- Poskytuje lepší zjistitelnost schémat.
- Zlepšuje výkon v době latence příjmu dat i dotazů.
Běžné dotazy
Běžné dotazy se zobrazují v tabulkách specifických pro prostředky a Azure Diagnostics.
Nejčastější dotazy N(10) seřazené podle spotřeby jednotek žádostí (RU) v určitém časovém rámci
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
Omezení požadavků (statusCode = 429) v určitém časovém intervalu
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
Dotazy s největší délkou odpovědi (velikost datové části odpovědi serveru)
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
Spotřeba RU podle fyzického oddílu (napříč všemi replikami v sadě replik)
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
Spotřeba RU podle logického oddílu (napříč všemi replikami v sadě replik)
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
Další kroky
- Další informace o tom, jak vytvořit nastavení diagnostiky pro službu Azure Cosmos DB, najdete v tématu Vytvoření nastavení diagnostiky.
- Podrobné informace o tom, jak vytvořit nastavení diagnostiky pomocí webu Azure Portal, Azure CLI nebo PowerShellu, najdete v tématu Vytvoření nastavení diagnostiky pro shromažďování protokolů platformy a metrik v Azure.