Share via


SQL Server Machine Learning Services bewaken met dynamische beheerweergaven (DMV's)

Van toepassing op: SQL Server 2016 (13.x) en latere versies van Azure SQL Managed Instance

Gebruik dynamische beheerweergaven (DMV's) om de uitvoering van externe scripts (Python en R) te bewaken, resources te gebruiken die worden gebruikt, problemen te diagnosticeren en prestaties af te stemmen in SQL Server Machine Learning Services.

In dit artikel vindt u de DMV's die specifiek zijn voor SQL Server Machine Learning Services. U vindt ook voorbeeldquery's die het volgende laten zien:

  • Instellingen en configuratieopties voor machine learning
  • Actieve sessies met externe Python- of R-scripts
  • Uitvoeringsstatistieken voor de externe runtime voor Python en R
  • Prestatiemeteritems voor externe scripts
  • Geheugengebruik voor het besturingssysteem, SQL Server en externe resourcegroepen
  • Geheugenconfiguratie voor SQL Server en externe resourcegroepen
  • Resource Governor-resourcegroepen, inclusief externe resourcegroepen
  • Geïnstalleerde pakketten voor Python en R

Zie Systeem dynamische beheerweergaven voor meer algemene informatie over DMV's.

Aanbeveling

U kunt ook de aangepaste rapporten gebruiken om SQL Server Machine Learning Services te bewaken. Zie Machine Learning bewaken met behulp van aangepaste rapporten in Management Studio voor meer informatie.

Dynamische beheerweergaven

De volgende dynamische beheerweergaven kunnen worden gebruikt bij het bewaken van machine learning-workloads in SQL Server. Als u een query wilt uitvoeren op de DMV's, hebt u toestemming nodig VIEW SERVER STATE voor de instantie.

Dynamische beheerweergave Typologie Description
sys.dm_external_script_requests Execution Geeft een rij terug voor elk actieve werknemersaccount waarop een extern script wordt uitgevoerd.
sys.dm_external_script_execution_stats Execution Retourneert één rij voor elk type externe scriptaanvraag.
sys.dm_os_performance_counters Execution Retourneert een rij per prestatiemeteritem die wordt onderhouden door de server. Als u de zoekvoorwaarde WHERE object_name LIKE '%External Scripts%'gebruikt, kunt u deze informatie gebruiken om te zien hoeveel scripts zijn uitgevoerd, welke scripts werden uitgevoerd met behulp van welke verificatiemodus, of hoeveel R- of Python-aanroepen zijn uitgegeven op het exemplaar in het algemeen.
sys.dm_resource_governor_external_resource_pools Middelenbeheerder Retourneert informatie over de huidige status van de externe resourcegroep in Resource Governor, de huidige configuratie van resourcegroepen en statistieken van de resourcegroep.
sys.dm_resource_governor_external_resource_pool_affinity Middelenbeheerder Retourneert cpu-affiniteitsinformatie over de huidige configuratie van de externe resourcepool in Resource Governor. Retourneert één rij per scheduler in SQL Server waarbij elke scheduler is toegewezen aan een afzonderlijke processor. Gebruik deze weergave om de toestand van een planner te bewaken of om uit de hand gelopen taken te identificeren.

Zie Catalogusweergaven en Resource Governor-gerelateerde dynamische beheerweergaven voor informatie over het bewaken van SQL Server-exemplaren.

Instellingen en configuratie

Bekijk de installatie-instelling en configuratieopties van Machine Learning Services.

Uitvoer van de instellingen en configuratiequery

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_server_registry, sys.configurations en SERVERPROPERTY voor meer informatie over de weergaven en functies die worden gebruikt.

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';

De query retourneert de volgende kolommen:

Rubriek Description
IsMLServicesInstalled Retourneert 1 als SQL Server Machine Learning Services is geïnstalleerd voor het exemplaar. Anders wordt 0 geretourneerd.
ExterneScriptsGeactiveerd Retourneert 1 als externe scripts zijn ingeschakeld voor het exemplaar. Anders wordt 0 geretourneerd.
ImpliedAuthenticationEnabled Retourneert 1 als impliciete verificatie is ingeschakeld. Anders wordt 0 geretourneerd. De configuratie voor impliciete verificatie wordt gecontroleerd door te controleren of er een aanmelding voor SQLRUserGroup bestaat.
IsTcpEnabled Retourneert 1 als het TCP/IP-protocol is ingeschakeld voor het exemplaar. Anders wordt 0 geretourneerd. Zie Default SQL Server Network Protocol Configurationvoor meer informatie.

Actieve sessies

Bekijk de actieve sessies waarop externe scripts worden uitgevoerd.

Uitvoer van de actieve instellingenquery

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_exec_requests, sys.dm_external_script_requests en sys.dm_exec_sessions voor meer informatie over de gebruikte dynamische beheerweergaven.

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;

De query retourneert de volgende kolommen:

Rubriek Description
sessie-id Identificeert de sessie die is gekoppeld aan elke actieve primaire verbinding.
blocking_session_id (blokkade_sessie_id) Id van de sessie die de aanvraag blokkeert. Als deze kolom NULL is, wordt de aanvraag niet geblokkeerd of is de sessiegegevens van de blokkerende sessie niet beschikbaar (of kunnen niet worden geïdentificeerd).
status Status van de aanvraag.
databasenaam Naam van de huidige database voor elke sessie.
gebruikersnaam Sql Server-aanmeldingsnaam waaronder de sessie momenteel wordt uitgevoerd.
wachttijd Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom de duur in milliseconden van de huidige wachttijd. Is niet nulbaar.
wait_type Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom het type wachttijd. Zie sys.dm_os_wait_stats voor informatie over typen wachttijden.
last_wait_type Als deze aanvraag eerder is geblokkeerd, retourneert deze kolom het type van de laatste wachttijd.
totale verstreken tijd De totale tijd die is verstreken in milliseconden sinds de aanvraag is aangekomen.
CPU-tijd CPU-tijd in milliseconden die door de aanvraag wordt gebruikt.
leesbewerkingen Het aantal leesbewerkingen dat door deze aanvraag is uitgevoerd.
logical_reads Het aantal logische leesbewerkingen dat door de aanvraag is uitgevoerd.
schrijfbewerkingen Aantal schrijfbewerkingen dat door deze aanvraag wordt uitgevoerd.
language Trefwoord dat een ondersteunde scripttaal vertegenwoordigt.
degree_of_parallelism Een getal dat het aantal gemaakte parallelle processen aangeeft. Deze waarde kan afwijken van het aantal parallelle processen dat is aangevraagd.
external_user_name Het Windows-werkrolaccount waaronder het script is uitgevoerd.

Uitvoeringsstatistieken

Bekijk de uitvoeringsstatistieken voor de externe runtime voor R en Python. Alleen statistieken van RevoScaleR-, revoscalepy- of microsoftml-pakketfuncties zijn momenteel beschikbaar.

Uitvoer van de uitvoeringsstatistiekenquery

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_external_script_execution_stats voor meer informatie over de gebruikte dynamische beheerweergave. De query retourneert alleen functies die meer dan één keer zijn uitgevoerd.

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

De query retourneert de volgende kolommen:

Rubriek Description
language Naam van de geregistreerde externe scripttaal.
counter_naam Naam van een geregistreerde externe scriptfunctie.
tellerwaarde Het totale aantal instanties waarin de geregistreerde externe scriptfunctie op de server is aangeroepen. Deze waarde is cumulatief, te beginnen met de tijd dat de functie op het exemplaar is geïnstalleerd en kan niet opnieuw worden ingesteld.

Prestatiestatistieken

Bekijk de prestatiemeteritems met betrekking tot de uitvoering van externe scripts.

Uitvoer van de prestatiemeterquery

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_os_performance_counters voor meer informatie over de gebruikte dynamische beheerweergave.

SELECT counter_name, cntr_value
FROM sys.dm_os_performance_counters 
WHERE object_name LIKE '%External Scripts%'

sys.dm_os_performance_counters voert de volgende prestatiemeteritems uit voor externe scripts:

Counter Description
Totaal aantal uitvoeringen Aantal externe processen dat is gestart door lokale of externe aanroepen.
Parallelle uitvoeringen Aantal keren dat een script de @parallel specificatie bevat en dat SQL Server een parallel queryplan kon genereren en gebruiken.
Streaming-uitvoeringen Aantal keren dat de streamingfunctie is aangeroepen.
SQL CC-uitvoeringen Het aantal externe scripts wordt uitgevoerd waarop de aanroep extern is geïnstantieerd en SQL Server is gebruikt als rekencontext.
Impliciete authenticatie-aanmeldingen Aantal keren dat een ODBC-loopback-aanroep is gedaan met behulp van impliciete verificatie; Dat wil gezegd, de SQL Server heeft de aanroep uitgevoerd namens de gebruiker die de scriptaanvraag verzendt.
Totale uitvoeringstijd (ms) De tijd die is verstreken tussen het gesprek en de voltooiing van het gesprek.
Uitvoeringsfouten Aantal keren dat scripts fouten hebben gerapporteerd. Dit aantal bevat geen R- of Python-fouten.

Geheugengebruik

Bekijk informatie over het geheugen dat wordt gebruikt door het besturingssysteem, SQL Server en de externe pools.

Uitvoer van de query voor geheugengebruik

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_resource_governor_external_resource_pools en sys.dm_os_sys_info voor meer informatie over de gebruikte dynamische beheerweergaven.

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;

De query retourneert de volgende kolommen:

Rubriek Description
physical_memory_kb De totale hoeveelheid fysiek geheugen op de computer.
committed_kb Het vastgelegde geheugen in kilobytes (KB) in het geheugenbeheer. Omvat geen gereserveerd geheugen in de geheugenbeheerder.
external_pool_peak_memory_kb De som van de maximale hoeveelheid geheugen die in kilobytes wordt gebruikt voor alle externe resourcegroepen.

Geheugenconfiguratie

Bekijk informatie over het percentage van de maximale geheugenconfiguratie van SQL Server en externe resourcepools. Als SQL Server wordt uitgevoerd met de standaardwaarde, max server memory (MB)wordt deze beschouwd als 100% van het besturingssysteemgeheugen.

Uitvoer van de geheugenconfiguratiequery

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.configurations en sys.dm_resource_governor_external_resource_pools voor meer informatie over de gebruikte weergaven.

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;

De query retourneert de volgende kolommen:

Rubriek Description
naam Naam van de externe resourcegroep of SQL Server.
max_memory_percent Het maximale geheugen dat SQL Server of de externe resourcegroep kan gebruiken.

Resourcegroepen

In SQL Server Resource Governor vertegenwoordigt een resourcegroep een subset van de fysieke resources van een exemplaar. U kunt limieten opgeven voor de hoeveelheid CPU, fysieke IO en geheugen die binnenkomende toepassingsaanvragen, waaronder het uitvoeren van externe scripts, binnen de resourcegroep kunnen gebruiken. Bekijk de resourcegroepen die worden gebruikt voor SQL Server en externe scripts.

Uitvoer van de query van de resource-pools

Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_resource_governor_resource_pools en sys.dm_resource_governor_external_resource_pools voor meer informatie over de gebruikte dynamische beheerweergaven.

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;

De query retourneert de volgende kolommen:

Rubriek Description
zwembad_naam Naam van de resourcepool. SQL Server-resourcegroepen worden voorafgegaan door SQL Server en externe resourcegroepen worden voorafgegaan door External Pool.
Totale CPU-gebruikstijd in uren Het cumulatieve CPU-gebruik in milliseconden sinds de statistieken van Resource Governor opnieuw zijn ingesteld.
read_io_afgerond_totaal De totale lees-IO's zijn voltooid sinds de statistieken van Resource Governor opnieuw zijn ingesteld.
write_io_completed_total De totale schrijf-I/O's die zijn voltooid sinds de statistieken van Resource Governor opnieuw zijn ingesteld.

Geïnstalleerde pakketten

U kunt de R- en Python-pakketten weergeven die zijn geïnstalleerd in SQL Server Machine Learning Services door een R- of Python-script uit te voeren dat deze uitvoert.

Geïnstalleerde pakketten voor R

Bekijk de R-pakketten die zijn geïnstalleerd in SQL Server Machine Learning Services.

Uitvoer van de geïnstalleerde pakketten voor R-query

Voer de onderstaande query uit om deze uitvoer op te halen. De query gebruikt een R-script om R-pakketten te bepalen die zijn geïnstalleerd met 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 geretourneerde kolommen zijn:

Rubriek Description
Package Naam van het geïnstalleerde pakket.
Versie Versie van het pakket.
Dat hangt ervan af. Geeft een lijst weer van de pakketten waarop het geïnstalleerde pakket afhankelijk is.
Licentie Licentie voor het geïnstalleerde pakket.
LibPath Directory waar u het pakket kunt vinden.

Geïnstalleerde pakketten voor Python

Bekijk de Python-pakketten die zijn geïnstalleerd in SQL Server Machine Learning Services.

Uitvoer van de geïnstalleerde pakketten voor Python-query

Voer de onderstaande query uit om deze uitvoer op te halen. De query gebruikt een Python-script om te bepalen welke Python-pakketten zijn geïnstalleerd met 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 geretourneerde kolommen zijn:

Rubriek Description
Package Naam van het geïnstalleerde pakket.
Versie Versie van het pakket.
Locatie Directory waar u het pakket kunt vinden.

Volgende stappen