Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Techniken zum Analysieren Ihrer dedizierten SQL-Pool-Workload in Azure Synapse Analytics.
Ressourcenklassen
Der dedizierte SQL-Pool stellt Ressourcenklassen bereit, um Abfragen Systemressourcen zuzuweisen. Weitere Informationen zu Ressourcenklassen finden Sie unter Ressourcenklassen & Workload-Management. Abfragen warten, wenn die einer Abfrage zugewiesene Ressourcenklasse mehr Ressourcen benötigt, als derzeit verfügbar sind.
Erkennung von Abfragen in der Warteschlange und andere DMVs
Sie können die DMV sys.dm_pdw_exec_requests verwenden, um Abfragen zu identifizieren, die in eine Parallelitätswarteschlange eingereiht wurden. Abfragen, die auf einen Parallelitätsslot warten, weisen den Status "ausgesetzt" auf.
SELECT r.[request_id] AS Request_ID
, r.[status] AS Request_Status
, r.[submit_time] AS Request_SubmitTime
, r.[start_time] AS Request_StartTime
, DATEDIFF(ms,[submit_time],[start_time]) AS Request_InitiateDuration_ms
, r.resource_class AS Request_resource_class
FROM sys.dm_pdw_exec_requests r
;
Arbeitsauslastungsverwaltungsrollen können mit sys.database_principals angezeigt werden.
SELECT ro.[name] AS [db_role_name]
FROM sys.database_principals ro
WHERE ro.[type_desc] = 'DATABASE_ROLE'
AND ro.[is_fixed_role] = 0
;
Die folgende Abfrage zeigt, welcher Rolle jeder Benutzer zugewiesen ist.
SELECT r.name AS role_principal_name
, m.name AS member_principal_name
FROM sys.database_role_members rm
JOIN sys.database_principals AS r ON rm.role_principal_id = r.principal_id
JOIN sys.database_principals AS m ON rm.member_principal_id = m.principal_id
WHERE r.name IN ('mediumrc','largerc','xlargerc')
;
Der dedizierte SQL-Pool verfügt über die folgenden Wartezeittypen:
-
LocalQueriesConcurrencyResourceType: Abfragen, die sich außerhalb des Parallelitäts-Slot-Rahmenwerks befinden. DMV-Abfragen und Systemfunktionen wie
SELECT @@VERSIONsind Beispiele für lokale Abfragen. - UserConcurrencyResourceType: Abfragen, die sich im Parallelitäts-Slot-Framework befinden. Abfragen für Endbenutzertabellen stellen Beispiele dar, die diesen Ressourcentyp verwenden würden.
- DmsConcurrencyResourceType: Wartezeiten, die sich aus Datenverschiebungsvorgängen ergeben.
- BackupConcurrencyResourceType: Diese Wartezeit gibt an, dass eine Datenbank gesichert wird. Der Maximalwert für diesen Ressourcentyp ist 1. Wenn mehrere Sicherungen gleichzeitig angefordert wurden, werden die anderen in die Warteschlange gestellt. Im Allgemeinen empfehlen wir eine Mindestzeit zwischen aufeinander folgenden Momentaufnahmen von 10 Minuten.
Mit dem sys.dm_pdw_waits DMV kann festgestellt werden, auf welche Ressourcen eine Anforderung wartet.
SELECT w.[wait_id]
, w.[session_id]
, w.[type] AS Wait_type
, w.[object_type]
, w.[object_name]
, w.[request_id]
, w.[request_time]
, w.[acquire_time]
, w.[state]
, w.[priority]
, SESSION_ID() AS Current_session
, s.[status] AS Session_status
, s.[login_name]
, s.[query_count]
, s.[client_id]
, s.[sql_spid]
, r.[command] AS Request_command
, r.[label]
, r.[status] AS Request_status
, r.[submit_time]
, r.[start_time]
, r.[end_compile_time]
, r.[end_time]
, DATEDIFF(ms,r.[submit_time],r.[start_time]) AS Request_queue_time_ms
, DATEDIFF(ms,r.[start_time],r.[end_compile_time]) AS Request_compile_time_ms
, DATEDIFF(ms,r.[end_compile_time],r.[end_time]) AS Request_execution_time_ms
, r.[total_elapsed_time]
FROM sys.dm_pdw_waits w
JOIN sys.dm_pdw_exec_sessions s ON w.[session_id] = s.[session_id]
JOIN sys.dm_pdw_exec_requests r ON w.[request_id] = r.[request_id]
WHERE w.[session_id] <> SESSION_ID();
Der sys.dm_pdw_resource_waits DMV zeigt die Warteinformationen für eine bestimmte Abfrage an. Die Ressourcenwartezeit misst die Zeit, die auf die Bereitstellung von Ressourcen gewartet wird. Signalwartezeit ist die Zeit, die die zugrunde liegenden SQL-Server benötigen, um die Abfrage zur Ausführung an die CPU zu übergeben.
SELECT [session_id]
, [type]
, [object_type]
, [object_name]
, [request_id]
, [request_time]
, [acquire_time]
, DATEDIFF(ms,[request_time],[acquire_time]) AS acquire_duration_ms
, [concurrency_slots_used] AS concurrency_slots_reserved
, [resource_class]
, [wait_id] AS queue_position
FROM sys.dm_pdw_resource_waits
WHERE [session_id] <> SESSION_ID();
Sie können auch die DMV sys.dm_pdw_resource_waits verwenden, um die Anzahl der gewährten Parallelitätsslots zu berechnen.
SELECT SUM([concurrency_slots_used]) as total_granted_slots
FROM sys.[dm_pdw_resource_waits]
WHERE [state] = 'Granted'
AND [resource_class] is not null
AND [session_id] <> session_id();
Der sys.dm_pdw_wait_stats DMV kann zur historischen Trendanalyse von Wartezeiten verwendet werden.
SELECT w.[pdw_node_id]
, w.[wait_name]
, w.[max_wait_time]
, w.[request_count]
, w.[signal_time]
, w.[completed_count]
, w.[wait_time]
FROM sys.dm_pdw_wait_stats w;
Nächste Schritte
Weitere Informationen zum Verwalten von Datenbankbenutzern und -sicherheit finden Sie unter Sichern eines dedizierten SQL-Pools (früher SQL DW). Weitere Informationen dazu, wie größere Ressourcenklassen die Indexqualität des gruppierten Spaltenspeichers verbessern können, finden Sie unter "Neuerstellen von Indizes", um die Segmentqualität zu verbessern.