Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Instância Gerenciada SQL do Azure
Use exibições de gerenciamento dinâmico (DMVs) para monitorar a execução de scripts externos (Python e R), recursos usados, diagnosticar problemas e ajustar o desempenho nos Serviços de Aprendizado de Máquina do SQL Server.
Neste artigo, você encontrará os DMVs específicos para os Serviços de Aprendizado de Máquina do SQL Server. Você também encontrará exemplos de consultas que mostram:
- Definições e opções de configuração para aprendizagem automática
- Sessões ativas executando scripts Python ou R externos
- Estatísticas de execução para o tempo de execução externo para Python e R
- Contadores de desempenho para scripts externos
- Uso de memória para o SO, SQL Server e pools de recursos externos
- Configuração de memória para SQL Server e pools de recursos externos
- Pools de recursos do Administrador de Recursos, incluindo pools de recursos externos
- Pacotes instalados para Python e R
Para obter mais informações gerais sobre DMVs, consulte Vistas de Gestão Dinâmica do Sistema.
Sugestão
Você também pode usar os relatórios personalizados para monitorar os Serviços de Aprendizado de Máquina do SQL Server. Para obter mais informações, consulte Monitorar o aprendizado de máquina usando relatórios personalizados no Management Studio.
Visualizações de gerenciamento dinâmico
As exibições de gerenciamento dinâmico a seguir podem ser usadas ao monitorar cargas de trabalho de aprendizado de máquina no SQL Server. Para consultar os DMVs, você precisa de VIEW SERVER STATE permissão na instância.
| Visualização de gerenciamento dinâmico | Tipo | Description |
|---|---|---|
| sys.dm_external_script_requests | Execution | Retorna uma linha para cada conta de trabalhador ativa que está executando um script externo. |
| sys.dm_external_script_execution_stats | Execution | Retorna uma linha para cada tipo de solicitação de script externo. |
| sys.dm_os_performance_counters | Execution | Retorna uma linha por contador de desempenho mantido pelo servidor. Se você usar a condição WHERE object_name LIKE '%External Scripts%'de pesquisa , poderá usar essas informações para ver quantos scripts foram executados, quais scripts foram executados usando qual modo de autenticação ou quantas chamadas R ou Python foram emitidas na instância em geral. |
| sys.dm_resource_governor_external_resource_pools | Administrador de Recursos | Retorna informações sobre o estado atual do pool de recursos externos no Administrador de Recursos, a configuração atual dos pools de recursos e as estatísticas do pool de recursos. |
| sys.dm_resource_governor_external_resource_pool_affinity | Administrador de Recursos | Retorna informações de afinidade de CPU sobre a configuração atual do pool de recursos externos no Administrador de Recursos. Retorna uma linha por agendador no SQL Server onde cada agendador é mapeado para um processador individual. Use esse modo de exibição para monitorar a condição de um agendador ou para identificar tarefas descontroladas. |
Para obter informações sobre como monitorar instâncias do SQL Server, consulte Exibições de catálogo e Exibições de gerenciamento dinâmico relacionadas ao administrador de recursos.
Definições e configuração
Veja a definição de instalação e as opções de configuração dos Serviços de Aprendizado de Máquina.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre as exibições e funções usadas, consulte sys.dm_server_registry, sys.configurations e SERVERPROPERTY.
SELECT CAST(SERVERPROPERTY('IsAdvancedAnalyticsInstalled') AS INT) AS IsMLServicesInstalled
, CAST(value_in_use AS INT) AS ExternalScriptsEnabled
, COALESCE(SIGN(SUSER_ID(CONCAT (
CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(128))
, '\SQLRUserGroup'
, CAST(serverproperty('InstanceName') AS NVARCHAR(128))
))), 0) AS ImpliedAuthenticationEnabled
, COALESCE((
SELECT CAST(r.value_data AS INT)
FROM sys.dm_server_registry AS r
WHERE r.registry_key LIKE 'HKLM\Software\Microsoft\Microsoft SQL Server\%\SuperSocketNetLib\Tcp'
AND r.value_name = 'Enabled'
), - 1) AS IsTcpEnabled
FROM sys.configurations
WHERE name = 'external scripts enabled';
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| IsMLServicesInstalled | Retorna 1 se o SQL Server Machine Learning Services estiver instalado para a instância. Caso contrário, retorna 0. |
| ScriptsExternosAtivados | Retorna 1 se scripts externos estiverem habilitados para a instância. Caso contrário, retorna 0. |
| ImpliedAuthenticationEnabled | Retorna 1 se a autenticação implícita estiver habilitada. Caso contrário, retorna 0. A configuração para autenticação implícita é verificada verificando se existe um logon para SQLRUserGroup. |
| IsTcpEnabled | Retorna 1 se o protocolo TCP/IP estiver habilitado para a instância. Caso contrário, retorna 0. Para obter mais informações, consulte Default SQL Server Network Protocol Configuration. |
Sessões ativas
Exiba as sessões ativas executando scripts externos.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre as exibições de gerenciamento dinâmico usadas, consulte sys.dm_exec_requests, sys.dm_external_script_requests e sys.dm_exec_sessions.
SELECT r.session_id, r.blocking_session_id, r.status, DB_NAME(s.database_id) AS database_name
, s.login_name, r.wait_time, r.wait_type, r.last_wait_type, r.total_elapsed_time, r.cpu_time
, r.reads, r.logical_reads, r.writes, er.language, er.degree_of_parallelism, er.external_user_name
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_external_script_requests AS er
ON r.external_script_request_id = er.external_script_request_id
INNER JOIN sys.dm_exec_sessions AS s
ON s.session_id = r.session_id;
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| identificador_de_sessão | Identifica a sessão associada a cada conexão primária ativa. |
| ID_sessão_de_bloqueio | ID da sessão que está bloqueando a solicitação. Se esta coluna for NULL, a solicitação não será bloqueada ou as informações da sessão de bloqueio não estarão disponíveis (ou não poderão ser identificadas). |
| estado | Estado do pedido. |
| nome_da_base_de_dados | Nome do banco de dados atual para cada sessão. |
| nome_de_login | Nome de logon do SQL Server sob o qual a sessão está sendo executada no momento. |
| tempo_de_espera | Se a solicitação estiver bloqueada no momento, esta coluna retornará a duração, em milissegundos, da espera atual. Não é anulável. |
| tipo_de_espera | Se a solicitação estiver bloqueada no momento, esta coluna retornará o tipo de espera. Para obter informações sobre tipos de espera, consulte sys.dm_os_wait_stats. |
| last_wait_type | Se essa solicitação tiver sido bloqueada anteriormente, esta coluna retornará o tipo da última espera. |
| tempo_total_decorrido | Tempo total decorrido em milissegundos desde que o pedido chegou. |
| Tempo de CPU | Tempo da CPU em milissegundos que é usado pela solicitação. |
| leituras | Número de leituras realizadas por esta solicitação. |
| leituras_lógicas | Número de leituras lógicas que foram executadas pela solicitação. |
| escritas | Número de gravações realizadas por esta solicitação. |
| linguagem | Palavra-chave que representa uma linguagem de script suportada. |
| grau_de_paralelismo | Número que indica o número de processos paralelos que foram criados. Esse valor pode ser diferente do número de processos paralelos solicitados. |
| nome_utilizador_externo | A conta de trabalho do Windows sob a qual o script foi executado. |
Estatísticas de execução
Visualize as estatísticas de execução para o tempo de execução externo para R e Python. Apenas estatísticas de funções de pacote RevoScaleR, revoscalepy ou microsoftml estão disponíveis no momento.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre o modo de exibição de gerenciamento dinâmico usado, consulte sys.dm_external_script_execution_stats. A consulta retorna apenas funções que foram executadas mais de uma vez.
SELECT language, counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE counter_value > 0
ORDER BY language, counter_name;
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| linguagem | Nome da linguagem de script externa registrada. |
| nome_do_contador | Nome de uma função de script externa registrada. |
| counter_value | Número total de instâncias em que a função de script externo registada foi chamada no servidor. Esse valor é cumulativo, começando com a hora em que o recurso foi instalado na instância, e não pode ser redefinido. |
Contadores de desempenho
Exiba os contadores de desempenho relacionados à execução de scripts externos.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre o modo de exibição de gerenciamento dinâmico usado, consulte sys.dm_os_performance_counters.
SELECT counter_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%External Scripts%'
sys.dm_os_performance_counters produz os seguintes contadores de desempenho para scripts externos:
| Counter | Description |
|---|---|
| Total de execuções | Número de processos externos iniciados por chamadas locais ou remotas. |
| Execuções paralelas | Número de vezes que um script incluiu a especificação @parallel e que o SQL Server foi capaz de gerar e usar um plano de consulta paralela. |
| Execuções de streaming | Número de vezes que o recurso de streaming foi invocado. |
| Execuções do SQL CC | Número de scripts externos executados onde a chamada foi instanciada remotamente e o SQL Server foi usado como contexto de computação. |
| Logins de autenticação implícitos | Número de vezes que uma chamada de loopback ODBC foi feita usando autenticação implícita; ou seja, o SQL Server executou a chamada em nome do usuário que envia a solicitação de script. |
| Tempo Total de Execução (ms) | Tempo decorrido entre a chamada e a conclusão da chamada. |
| Erros de execução | Número de vezes que os scripts reportaram erros. Esta contagem não inclui erros R ou Python. |
Utilização da memória
Exiba informações sobre a memória usada pelo sistema operacional, pelo SQL Server e pelos pools externos.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre as exibições de gerenciamento dinâmico usadas, consulte sys.dm_resource_governor_external_resource_pools e sys.dm_os_sys_info.
SELECT physical_memory_kb, committed_kb
, (SELECT SUM(peak_memory_kb)
FROM sys.dm_resource_governor_external_resource_pools AS ep
) AS external_pool_peak_memory_kb
FROM sys.dm_os_sys_info;
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| memória_física_kb | A quantidade total de memória física na máquina. |
| committed_kb | A memória alocada em kilobytes (KB) no gestor de memória. Não inclui memória reservada no gerenciador de memória. |
| external_pool_peak_memory_kb | A soma da quantidade máxima de memória usada, em kilobytes, para todos os pools de recursos externos. |
Configuração de memória
Exiba informações sobre a configuração máxima de memória em porcentagem do SQL Server e pools de recursos externos. Se o SQL Server estiver sendo executado com o valor padrão de max server memory (MB), ele será considerado como 100% da memória do sistema operacional.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre os modos de exibição usados, consulte sys.configurations e sys.dm_resource_governor_external_resource_pools.
SELECT 'SQL Server' AS name
, CASE CAST(c.value AS BIGINT)
WHEN 2147483647 THEN 100
ELSE (SELECT CAST(c.value AS BIGINT) / (physical_memory_kb / 1024.0) * 100 FROM sys.dm_os_sys_info)
END AS max_memory_percent
FROM sys.configurations AS c
WHERE c.name LIKE 'max server memory (MB)'
UNION ALL
SELECT CONCAT ('External Pool - ', ep.name) AS pool_name, ep.max_memory_percent
FROM sys.dm_resource_governor_external_resource_pools AS ep;
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| nome | Nome do pool de recursos externos ou SQL Server. |
| max_memory_percent | A memória máxima que o SQL Server ou o pool de recursos externos pode usar. |
Conjuntos de recursos
No Administrador de Recursos do SQL Server, um pool de recursos representa um subconjunto dos recursos físicos de uma instância. Você pode especificar limites na quantidade de CPU, E/S física e memória que as solicitações de aplicativos de entrada, incluindo a execução de scripts externos, podem usar dentro do pool de recursos. Exiba os pools de recursos usados para o SQL Server e scripts externos.
Execute a consulta abaixo para obter essa saída. Para obter mais informações sobre as exibições de gerenciamento dinâmico usadas, consulte sys.dm_resource_governor_resource_pools e sys.dm_resource_governor_external_resource_pools.
SELECT CONCAT ('SQL Server - ', p.name) AS pool_name
, p.total_cpu_usage_ms, p.read_io_completed_total, p.write_io_completed_total
FROM sys.dm_resource_governor_resource_pools AS p
UNION ALL
SELECT CONCAT ('External Pool - ', ep.name) AS pool_name
, ep.total_cpu_user_ms, ep.read_io_count, ep.write_io_count
FROM sys.dm_resource_governor_external_resource_pools AS ep;
A consulta retorna as seguintes colunas:
| Coluna | Description |
|---|---|
| nome_do_pool | Nome do pool de recursos. Os pools de recursos do SQL Server são prefixados com SQL Server e os pools de recursos externos são prefixados com External Pool. |
| total_horas_uso_cpu | O uso cumulativo da CPU em milissegundos desde que as estatísticas do Administrador de Recursos foram redefinidas. |
| total_leituras_io_concluídas | O número total de leituras de IO concluídas desde que as estatísticas do Governador de Recursos foram redefinidas. |
| escrita_io_concluída_total | Os IOs de escrita totais concluídos desde que as estatísticas do Administrador de Recursos foram redefinidas. |
Pacotes instalados
Você pode exibir os pacotes R e Python instalados nos Serviços de Aprendizado de Máquina do SQL Server executando um script R ou Python que os produz.
Pacotes instalados para R
Exiba os pacotes R instalados nos Serviços de Aprendizado de Máquina do SQL Server.
Execute a consulta abaixo para obter essa saída. A consulta usa um script R para determinar pacotes R instalados com o SQL Server.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((Package NVARCHAR(255), Version NVARCHAR(100), Depends NVARCHAR(4000)
, License NVARCHAR(1000), LibPath NVARCHAR(2000)));
As colunas retornadas são:
| Coluna | Description |
|---|---|
| Package | Nome do pacote instalado. |
| Versão | Versão do pacote. |
| Depends | Lista o(s) pacote(s) do qual o pacote instalado depende. |
| Licença | Licença para o pacote instalado. |
| LibPath | Diretório onde você pode encontrar o pacote. |
Pacotes instalados para Python
Exiba os pacotes Python instalados nos Serviços de Aprendizado de Máquina do SQL Server.
Execute a consulta abaixo para obter essa saída. A consulta usa um script Python para determinar os pacotes Python instalados com o SQL Server.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pkg_resources
import pandas
OutputDataSet = pandas.DataFrame(sorted([(i.key, i.version, i.location) for i in pkg_resources.working_set]))'
WITH result sets((Package NVARCHAR(128), Version NVARCHAR(128), Location NVARCHAR(1000)));
As colunas retornadas são:
| Coluna | Description |
|---|---|
| Package | Nome do pacote instalado. |
| Versão | Versão do pacote. |
| Localização | Diretório onde você pode encontrar o pacote. |