Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Tip
Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial com base de data lake, arquitetura pronta para o futuro, IA integrada e novos recursos. Se você não estiver familiarizado com o data warehouse, comece com Fabric Data Warehouse. As cargas de trabalho existentes de pools de SQL dedicados podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.
Técnicas para analisar sua carga de trabalho para o pool de SQL dedicado no Azure Synapse Analytics.
Classes de recursos
O pool de SQL dedicado fornece classes de recurso para atribuir recursos do sistema a consultas. Para obter mais informações sobre classes de recurso, confira Classes de recurso para gerenciamento de carga de trabalho. As consultas aguardarão se a classe de recurso atribuída a uma consulta precisar de mais recursos do que os disponíveis no momento.
Detecção de consulta enfileirada e outros DMVs
Você pode usar a DMV sys.dm_pdw_exec_requests para identificar consultas que estão aguardando em uma fila de simultaneidade. As consultas que estão aguardando um slot de simultaneidade terão um status de suspensas.
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
;
As funções de gerenciamento de carga de trabalho podem ser exibidas com sys.database_principals.
SELECT ro.[name] AS [db_role_name]
FROM sys.database_principals ro
WHERE ro.[type_desc] = 'DATABASE_ROLE'
AND ro.[is_fixed_role] = 0
;
A consulta a seguir mostra a qual função cada usuário está atribuído.
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')
;
O pool de SQL dedicado tem os seguintes tipos de espera:
-
LocalQueriesConcurrencyResourceType: consultas que ficam fora da estrutura de slot de simultaneidade. Consultas DMV e funções de sistema, como
SELECT @@VERSION, são exemplos de consultas de locais. - UserConcurrencyResourceType: consultas que ficam dentro da estrutura de slot de simultaneidade. Consultas em tabelas do usuário final representam exemplos que usariam esse tipo de recurso.
- DmsConcurrencyResourceType: esperas resultantes de operações de movimentação de dados.
- BackupConcurrencyResourceType: essa espera indica que está sendo feito backup de um banco de dados. O valor máximo para esse tipo de recurso é 1. Se vários backups forem solicitados ao mesmo tempo, os outros serão colocados em fila. Em geral, recomendamos um tempo mínimo entre instantâneos consecutivos de dez minutos.
O DMV sys.dm_pdw_waits pode ser usado para ver quais recursos uma solicitação está aguardando.
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();
O DMV sys.dm_pdw_resource_waits mostra as informações de espera para uma determinada consulta. O tempo de espera do recurso mede o tempo aguardando que os recursos sejam fornecidos. O tempo de espera do sinal é o tempo que leva para os servidores SQL subjacentes agendarem a consulta na CPU.
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();
Você também pode usar o sys.dm_pdw_resource_waits DMV calcular quantos slots de simultaneidade foram concedidos.
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();
O DMV sys.dm_pdw_wait_stats pode ser usado para análise de tendências históricas de espera.
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;
Próximas etapas
Para obter mais informações sobre como gerenciar usuários de banco de dados e segurança, confira Proteger um banco de dados no pool de SQL dedicado (anteriormente denominado SQL DW). Para obter mais informações sobre como classes de recurso maiores podem melhorar a qualidade do índice columnstore clusterizado, consulte Recriando índices para melhorar a qualidade de segmento.