Dela via


Övervaka SQL Server Machine Learning Services med dynamiska hanteringsvyer (DMV:er)

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL Managed Instance

Använd dynamiska hanteringsvyer (DMV:er) för att övervaka körningen av externa skript (Python och R), resurser som används, diagnostisera problem och finjustera prestanda i SQL Server Machine Learning Services.

I den här artikeln hittar du de DMV:er som är specifika för SQL Server Machine Learning Services. Du hittar även exempelfrågor som visar:

  • Inställningar och konfigurationsalternativ för maskininlärning
  • Aktiva sessioner som kör externa Python- eller R-skript
  • Körningsstatistik för den externa miljön för Python och R
  • Prestandaräknare för externa skript
  • Minnesanvändning för operativsystemet, SQL Server och externa resurspooler
  • Minneskonfiguration för SQL Server och externa resurspooler
  • Resurspooler för Resource Governor, inklusive externa resurspooler
  • Installerade paket för Python och R

Mer allmän information om DMV:er finns i Vyer för dynamisk hantering av system.

Tips/Råd

Du kan också använda anpassade rapporter för att övervaka SQL Server Machine Learning Services. Mer information finns i Övervaka maskininlärning med anpassade rapporter i Management Studio.

Dynamiska hanteringsvyer

Följande dynamiska hanteringsvyer kan användas vid övervakning av maskininlärningsarbetsbelastningar i SQL Server. Om du vill köra frågor mot DMV:erna behöver VIEW SERVER STATE du behörighet för instansen.

Dynamisk hanteringsvy Typ Description
sys.dm_external_script_requests Execution Returnerar en rad för varje aktivt arbetskonto som kör ett externt skript.
sys.dm_external_script_execution_stats Execution Returnerar en rad för varje typ av extern skriptbegäran.
sys.dm_os_performance_counters Execution Returnerar en rad per prestandaräknare som underhålls av servern. Om du använder sökvillkoret WHERE object_name LIKE '%External Scripts%'kan du använda den här informationen för att se hur många skript som kördes, vilka skript som kördes med vilket autentiseringsläge eller hur många R- eller Python-anrop som utfärdades på instansen totalt sett.
sys.dm_resource_governor_external_resource_pools Resursguvernör Returnerar information om det aktuella externa resurspooltillståndet i Resource Governor, den aktuella konfigurationen av resurspooler och resurspoolsstatistik.
sys.dm_resource_governor_external_resource_pool_affinity Resursguvernör Returnerar cpu-tillhörighetsinformation om den aktuella konfigurationen av den externa resurspoolen i Resource Governor. Returnerar en rad per schemaläggare i SQL Server där varje schemaläggare mappas till en enskild processor. Använd den här vyn för att övervaka status för en schemaläggare eller för att identifiera okontrollerade uppgifter.

Information om övervakning av SQL Server-instanser finns i Katalogvyer och Resource Governor-relaterade dynamiska hanteringsvyer.

Inställningar och konfiguration

Visa installationsinställningen och konfigurationsalternativen för Machine Learning Services.

Utdata från inställningarna och konfigurationsfrågan

Kör frågan nedan för att hämta utdata. Mer information om de vyer och funktioner som används finns i sys.dm_server_registry, sys.configurations och 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';

Frågan returnerar följande kolumner:

Kolumn Description
IsMLServicesInstalled Returnerar 1 om SQL Server Machine Learning Services är installerat för instansen. Annars returnerar det 0.
ExternaSkriptAktiverat Returnerar 1 om externa skript är aktiverade för instansen. Annars returneras 0.
ImplicitAutentiseringAktiverad Returnerar 1 om underförstådd autentisering är aktiverat. Annars returneras 0. Konfigurationen för underförstådd autentisering kontrolleras genom att kontrollera om det finns en inloggning för SQLRUserGroup.
IsTcpEnabled Returnerar 1 om TCP/IP-protokollet är aktiverat för instansen. Annars returneras 0. Mer information finns i Sql Server Network Protocol-standardkonfiguration.

Aktiva sessioner

Visa aktiva sessioner som kör externa skript.

Utdata från den aktiva inställningsfrågan

Kör frågan nedan för att hämta utdata. Mer information om de dynamiska hanteringsvyer som används finns i sys.dm_exec_requests, sys.dm_external_script_requests och 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;

Frågan returnerar följande kolumner:

Kolumn Description
session_id Identifierar den session som är associerad med varje aktiv primär anslutning.
blocking_session_id ID för sessionen som blockerar begäran. Om den här kolumnen är NULL blockeras inte begäran eller sessionsinformationen för den blockerande sessionen är inte tillgänglig (eller kan inte identifieras).
status Status för begäran.
databasnamn Namnet på den aktuella databasen för varje session.
inloggningsnamn SQL Server-inloggningsnamn som sessionen körs under.
väntetid Om begäran för närvarande är blockerad returnerar den här kolumnen varaktigheten i millisekunder, för den aktuella väntetiden. Får inte vara ogiltig.
wait_type Om begäran för närvarande är blockerad returnerar den här kolumnen typen av väntan. Information om typer av väntetider finns i sys.dm_os_wait_stats.
last_wait_type Om den här begäran tidigare har blockerats returnerar den här kolumnen typen av sista väntan.
total_tidåtgång Total tid som förflutit i millisekunder sedan begäran kom.
CPU-tid CPU-tid i millisekunder som används av begäran.
läsningar Antal läsningar som utförs av den här begäran.
logical_reads Antal logiska läsningar som har utförts av begäran.
skrivningar Antal skrivningar som utförs av den här begäran.
Språk Nyckelord som representerar ett skriptspråk som stöds.
grad_av_parallelism Tal som anger antalet parallella processer som har skapats. Det här värdet kan skilja sig från antalet parallella processer som begärdes.
external_user_name Det Windows-arbetskonto under vilket skriptet kördes.

Körningsstatistik

Visa körningsstatistiken för den externa körmiljön för R och Python. För närvarande är endast statistik över revoScaleR-, revoscalepy- eller microsoftml-paketfunktioner tillgängliga.

Utdata från körningsstatistikfrågan

Kör frågan nedan för att hämta utdata. Mer information om den dynamiska hanteringsvy som används finns i sys.dm_external_script_execution_stats. Frågan returnerar bara funktioner som har körts mer än en gång.

SELECT language, counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE counter_value > 0
ORDER BY language, counter_name;

Frågan returnerar följande kolumner:

Kolumn Description
Språk Namnet på det registrerade externa skriptspråket.
räknarenamn Namnet på en registrerad extern skriptfunktion.
räknarvärde Totalt antal gånger som den registrerade externa skriptfunktionen har anropats på servern. Det här värdet är kumulativt, från och med den tid då funktionen installerades på instansen och kan inte återställas.

Prestandaräknare

Visa prestandaräknarna som är relaterade till körningen av externa skript.

Utdata från förfrågan om prestandaräknare

Kör frågan nedan för att hämta utdata. Mer information om den dynamiska hanteringsvy som används finns i 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 matar ut följande prestandaräknare för externa skript:

Counter Description
Totalt antal exekveringar Antal externa processer som startats av lokala eller fjärranslutna anrop.
Parallella körningar Antal gånger som ett skript inkluderade @parallel-specifikationen och att SQL Server kunde generera och använda en parallell frågeplan.
Utföranden av direktuppspelning Antal gånger som strömningsfunktionen har anropats.
SQL CC-körningar Antalet externa skript körs där anropet instansierades via fjärranslutning och SQL Server användes som beräkningskontext.
Implicit autentisering. Inloggningar Antal gånger som ett ODBC-loopback-anrop gjordes med underförstådd autentisering. DET VILL SÄGA, SQL Server körde anropet för användaren som skickade skriptbegäran.
Total exekveringstid (ms) Tiden som förflutit mellan anropet och slutförandet av samtalet.
Körningsfel Antal gånger skript rapporterade fel. Det här antalet inkluderar inte R- eller Python-fel.

Minnesanvändning

Visa information om det minne som används av operativsystemet, SQL Server och de externa poolerna.

Utdata från minnesanvändningsfrågan

Kör frågan nedan för att hämta utdata. Mer information om de dynamiska hanteringsvyer som används finns i sys.dm_resource_governor_external_resource_pools och 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;

Frågan returnerar följande kolumner:

Kolumn Description
physical_memory_kb Den totala mängden fysiskt minne på datorn.
committed_kb Det incheckade minnet i kilobyte (KB) i minneshanteraren. Inkluderar inte reserverat minne i minneshanteraren.
external_pool_peak_memory_kb Summan av den maximala mängden minne som används i kilobyte för alla externa resurspooler.

Minneskonfiguration

Visa information om den maximala minneskonfigurationen i procent av SQL Server och externa resurspooler. Om SQL Server körs med standardvärdet max server memory (MB)anses den vara 100% av OS-minnet.

Utdata från minneskonfigurationsfrågan

Kör frågan nedan för att hämta utdata. Mer information om de vyer som används finns i sys.configurations och 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;

Frågan returnerar följande kolumner:

Kolumn Description
name Namnet på den externa resurspoolen eller SQL Server.
max_memory_percent Det maximala minne som SQL Server eller den externa resurspoolen kan använda.

Resurspooler

I SQL Server Resource Governor representerar en resurspool en delmängd av de fysiska resurserna för en instans. Du kan ange gränser för hur mycket PROCESSOR, fysisk I/O och minne som inkommande programbegäranden, inklusive körning av externa skript, kan använda i resurspoolen. Visa de resurspooler som används för SQL Server och externa skript.

Utdata från resurspoolfrågan

Kör frågan nedan för att hämta utdata. Mer information om de dynamiska hanteringsvyer som används finns i sys.dm_resource_governor_resource_pools och 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;

Frågan returnerar följande kolumner:

Kolumn Description
pool_name Namnet på resurspoolen. SQL Server-resurspooler är prefixerade med SQL Server och externa resurspooler är prefixerade med External Pool.
total_cpu_användningstimmar Den kumulativa CPU-användningen i millisekunder sedan resource governor-statistiken återställdes.
läs_io_slutfört_totalt Antalet slutförda läs-I/O-operationer sedan statistiken för Resource Governor återställdes.
skriv_io_avslutade_totalt Totalt antal skriv-I/O:er har slutförts sedan resource governor-statistiken återställdes.

Installerade paket

Du kan visa R- och Python-paketen som är installerade i SQL Server Machine Learning Services genom att köra ett R- eller Python-skript som matar ut dessa.

Installerade paket för R

Visa R-paketen som är installerade i SQL Server Machine Learning Services.

Utdata från de installerade paketen för R-fråga

Kör frågan nedan för att hämta utdata. Frågan använder ett R-skript för att fastställa R-paket som är installerade med 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)));

De kolumner som returneras är:

Kolumn Description
Package Namnet på det installerade paketet.
Utgåva Version av paketet.
Det beror på Visar de paket som det installerade paketet är beroende av.
Licens Licens för det installerade paketet.
LibPath Katalog där du hittar paketet.

Installerade paket för Python

Visa Python-paketen som är installerade i SQL Server Machine Learning Services.

Utdata från de installerade paketen för Python-frågan

Kör frågan nedan för att hämta utdata. Frågan använder ett Python-skript för att fastställa de Python-paket som är installerade med 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)));

De kolumner som returneras är:

Kolumn Description
Package Namnet på det installerade paketet.
Utgåva Version av paketet.
Plats Katalog där du hittar paketet.

Nästa steg