Megosztás a következőn keresztül:


Az SQL Server Machine Learning Services monitorozása dinamikus felügyeleti nézetek (DMV-k) használatával

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók felügyelt Azure SQL-példány

Dinamikus felügyeleti nézetek (DMV-k) használatával monitorozhatja a külső szkriptek (Python és R) végrehajtását, a használt erőforrásokat, diagnosztizálhatja a problémákat, és hangolhatja a teljesítményt az SQL Server Machine Learning Servicesben.

Ebben a cikkben az SQL Server Machine Learning Servicesre jellemző DMV-ket találja. A következő példákat tartalmazó lekérdezéseket is megtalálja:

  • Gépi tanulás beállításai és konfigurációs beállításai
  • Külső Python- vagy R-szkripteket futtató aktív munkamenetek
  • A Python és az R külső futtatókörnyezetének végrehajtási statisztikái
  • Külső szkriptek teljesítményszámlálói
  • Az operációs rendszer, az SQL Server és a külső erőforráskészletek memóriahasználata
  • Memóriakonfiguráció SQL Serverhez és külső erőforráskészletekhez
  • Resource Governor-erőforráskészletek, beleértve a külső erőforráskészleteket is
  • Telepített csomagok Pythonhoz és R-hez

A DMV-kkel kapcsolatos általános információkért lásd: Rendszerdinamikai felügyeleti nézetek.

Jótanács

Az egyéni jelentéseket az SQL Server Machine Learning Services monitorozására is használhatja. További információ: Gépi tanulás monitorozása egyéni jelentések használatával a Management Studióban.

Dinamikus felügyeleti nézetek

Az alábbi dinamikus felügyeleti nézetek használhatók az SQL Server gépi tanulási számítási feladatainak monitorozásához. A DMV-k lekérdezéséhez engedélyre van szüksége VIEW SERVER STATE a példányon.

Dinamikus felügyeleti nézet Típus Description
sys.dm_external_script_requests Execution Egy sort ad vissza minden olyan aktív feldolgozói fiókhoz, amely külső szkriptet futtat.
sys.dm_external_script_execution_stats Execution Egy sort ad vissza a külső szkriptkérelmek minden típusához.
sys.dm_os_performance_counters Execution A kiszolgáló által fenntartott teljesítményszámlálónkénti sort adja vissza. Ha a keresési feltételt WHERE object_name LIKE '%External Scripts%'használja, ezekkel az információkkal megtekintheti, hogy hány szkript futott, mely szkripteket futtatták a hitelesítési módban, vagy hogy összesen hány R- vagy Python-hívást adtak ki a példányon.
sys.dm_resource_governor_external_resource_pools Erőforrás-szabályozó A Resource Governor aktuális külső erőforráskészlet-állapotára, az erőforráskészletek aktuális konfigurációjára és az erőforráskészlet statisztikáira vonatkozó információkat adja vissza.
sys.dm_resource_governor_external_resource_pool_affinity Erőforrás-szabályozó A cpu affinitási adatait adja vissza a Resource Governor aktuális külső erőforráskészlet-konfigurációjáról. Ütemezőnként egy sort ad vissza az SQL Serveren, ahol minden ütemező egy egyéni processzorhoz van hozzárendelve. Ezzel a nézetben figyelheti az ütemező állapotát, vagy azonosíthatja az elszabadult feladatokat.

Az SQL Server-példányok monitorozásával kapcsolatos információkért lásd a katalógusnézeteket és az erőforrás-kormányzóval kapcsolatos dinamikus felügyeleti nézeteket.

Beállítások és konfiguráció

Tekintse meg a Machine Learning Services telepítési beállításait és konfigurációs beállításait.

A beállítások és a konfigurációs lekérdezés kimenete

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt nézetekről és függvényekről további információt a sys.dm_server_registry, a sys.configurations és a SERVERPROPERTY című témakörben talál.

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 lekérdezés a következő oszlopokat adja vissza:

oszlop Description
IsMLServicesInstalled 1 értéket ad vissza, ha az SQL Server Machine Learning Services telepítve van a példányhoz. Ellenkező esetben 0 értéket ad vissza.
KülsőSzkriptekEngedélyezve 1-et ad vissza, ha a külső script-ek engedélyezve vannak a példányhoz. Ellenkező esetben 0 értéket ad vissza.
HallgatólagosHitelesítésEngedélyezve 1 értéket ad vissza, ha engedélyezve van a hallgatólagos hitelesítés. Ellenkező esetben 0 értéket ad vissza. A vélelmezett hitelesítés konfigurációját a rendszer ellenőrzi, hogy létezik-e bejelentkezés az SQLRUserGroup-hoz.
TCP engedélyezve 1 értéket ad vissza, ha a TCP/IP protokoll engedélyezve van a példányhoz. Ellenkező esetben 0 értéket ad vissza. További információkért lásd: Alapértelmezett SQL Server hálózati protokoll konfiguráció.

Aktív munkamenetek

Tekintse meg a külső szkripteket futtató aktív munkameneteket.

Kimenet az aktív beállítások

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt dinamikus felügyeleti nézetekkel kapcsolatos további információkért lásd: sys.dm_exec_requests, sys.dm_external_script_requests és 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 lekérdezés a következő oszlopokat adja vissza:

oszlop Description
munkamenet_azonosító Azonosítja az egyes aktív elsődleges kapcsolatokhoz társított munkamenetet.
blokkoló_munkamenet_azonosító (blocking_session_id) A kérést blokkoló munkamenet azonosítója. Ha ez az oszlop NULL értékű, a kérés nincs letiltva, vagy a blokkoló munkamenet munkamenetadatai nem érhetők el (vagy nem azonosíthatók).
állapot A kérés állapota.
Adatbázis_név Az egyes munkamenetek aktuális adatbázisának neve.
felhasználói név AZ SQL Server bejelentkezési neve, amely alatt a munkamenet jelenleg fut.
várakozási idő Ha a kérés jelenleg le van tiltva, ez az oszlop az aktuális várakozás időtartamát adja vissza ezredmásodpercben. Nem lehet null értékű.
várakozási_típus Ha a kérés jelenleg le van tiltva, ez az oszlop a várakozás típusát adja vissza. A várakozási típusokkal kapcsolatos információkért lásd: sys.dm_os_wait_stats.
last_wait_type Ha ez a kérés korábban le lett tiltva, ez az oszlop az utolsó várakozás típusát adja vissza.
összesített eltelt idő A kérés megérkezése óta eltelt teljes idő ezredmásodpercben eltelt.
CPU idő A kérelem által használt processzoridő ezredmásodpercben.
olvasások A kérés által végrehajtott olvasások száma.
logikai_olvasások A kérelem által végrehajtott logikai olvasások száma.
írások A kérés által végrehajtott írások száma.
nyelv Támogatott szkriptnyelvet képviselő kulcsszó.
párhuzamosság_foka A létrehozott párhuzamos folyamatok számát jelző szám. Ez az érték eltérhet a kért párhuzamos folyamatok számától.
külső_felhasználónév Az a Windows-feldolgozófiók, amely alatt a szkript végrehajtása megtörtént.

Végrehajtási statisztikák

Tekintse meg az R és Python külső futtatókörnyezetének végrehajtási statisztikáit. Jelenleg csak a RevoScaleR, a revoscalepy vagy a microsoftml csomagfüggvények statisztikái érhetők el.

Kimenet a végrehajtási statisztikai

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt dinamikus felügyeleti nézettel kapcsolatos további információkért lásd: sys.dm_external_script_execution_stats. A lekérdezés csak azokat a függvényeket adja vissza, amelyek többször lettek végrehajtva.

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

A lekérdezés a következő oszlopokat adja vissza:

oszlop Description
nyelv A regisztrált külső szkriptnyelv neve.
számláló_név Regisztrált külső szkriptfüggvény neve.
számláló_érték A kiszolgálón a regisztrált külső szkriptfüggvényt meghívó összes példány száma. Ez az érték összegző, kezdve a szolgáltatás példányra való telepítésének időpontjától, és nem állítható vissza.

Teljesítmény számlálók

Tekintse meg a külső szkriptek végrehajtásához kapcsolódó teljesítményszámlálókat.

A teljesítményszámlálók lekérdezésének kimenete

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt dinamikus felügyeleti nézettel kapcsolatos további információkért lásd: 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 a következő teljesítményszámlálókat adja ki külső szkriptekhez:

Counter Description
Összes végrehajtás A helyi vagy távoli hívások által indított külső folyamatok száma.
Párhuzamos végrehajtások Azon esetek száma, amikor egy szkript tartalmazza a @parallel specifikációt, és hogy az SQL Server képes volt párhuzamos lekérdezési tervet létrehozni és használni.
Streamelési végrehajtások A streamelési szolgáltatás meghívásának száma.
SQL CC végrehajtások Azon külső szkriptek száma, ahol a hívást távolról példányosították, és az SQL Servert használták számítási környezetként.
Implikált hitelesítési bejelentkezések Az ODBC loopback hívások száma hallgatólagos hitelesítéssel; vagyis az SQL Server a parancsprogram-kérelmet küldő felhasználó nevében hajtotta végre a hívásokat.
Teljes végrehajtási idő (ms) A hívás és a hívás befejezése között eltelt idő.
Végrehajtási hibák A szkriptek által jelentett hibák száma. Ez a szám nem tartalmaz R- vagy Python-hibákat.

Memóriahasználat

Az operációs rendszer, az SQL Server és a külső készletek által használt memóriával kapcsolatos információk megtekintése.

A memóriahasználati lekérdezés kimenete

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt dinamikus felügyeleti nézetekről további információt sys.dm_resource_governor_external_resource_pools éssys.dm_os_sys_info talál.

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 lekérdezés a következő oszlopokat adja vissza:

oszlop Description
fizikai_memória_kb A fizikai memória teljes mennyisége a gépen.
foglalt_kilobájt A véglegesített memória kilobájtban (KB) a memóriakezelőben. Nem tartalmaz fenntartott memóriát a memóriakezelőben.
külső_készlet_csúcs_memória_kb Az összes külső erőforráskészlethez felhasznált memória maximális mennyisége kilobájtban.

Memóriakonfiguráció

Az SQL Server és a külső erőforráskészletek maximális memória-konfigurációjának százalékban kifejezett adatait tekintheti meg. Ha az SQL Server az alapértelmezett értékkel max server memory (MB)fut, akkor az operációs rendszer memóriájának 100% tekinthető.

Kimenet a memóriakonfigurációs lekérdezésből

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt nézetekről további információt a sys.configurations és a sys.dm_resource_governor_external_resource_pools című témakörben talál.

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 lekérdezés a következő oszlopokat adja vissza:

oszlop Description
név A külső erőforráskészlet vagy az SQL Server neve.
max_memória_százalék Az SQL Server vagy a külső erőforráskészlet által használható maximális memória.

Erőforráskészletek

Az SQL Server Resource Governorben az erőforráskészlet egy példány fizikai erőforrásainak egy részhalmazát jelöli. Megadhatja, hogy a bejövő alkalmazáskérelmek mennyi processzort, fizikai I/O-t és memóriát igényelhetnek, beleértve a külső szkriptek végrehajtását is az erőforráskészleten belül. Tekintse meg az SQL Serverhez és a külső szkriptekhez használt erőforráskészleteket.

Az erőforráskészlet-lekérdezés kimenete

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A használt dinamikus felügyeleti nézetekről további információt sys.dm_resource_governor_resource_pools éssys.dm_resource_governor_external_resource_pools talál.

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 lekérdezés a következő oszlopokat adja vissza:

oszlop Description
pool_name Az erőforráskészlet neve. Az SQL Server erőforráskészletek előtaggal SQL Server vannak ellátva, míg a külső erőforráskészletek előtagja External Pool.
teljes_cpu_felhasználás_órák A Resource Governor statisztikáinak alaphelyzetbe állítása óta eltelt ezredmásodpercben összesített CPU-használat.
read_io_teljesítve_összesen A Resource Governor statisztikáinak visszaállítása óta befejeződött az összes olvasási I/O.
írás_io_befejezett_összesen A Resource Governor statisztikáinak alaphelyzetbe állítása óta befejeződött az összes írási I/O.

Telepített csomagok

Az SQL Server Machine Learning Services-ben telepített R- és Python-csomagokat megtekintheti egy olyan R- vagy Python-szkript futtatásával, amely ezek listáját adja eredményül.

Telepített csomagok az R-hez

Tekintse meg az SQL Server Machine Learning Servicesben telepített R-csomagokat.

Kimenet az R-lekérdezés telepített csomagjaiból

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A lekérdezés egy R-szkripttel határozza meg az SQL Serverrel telepített R-csomagokat.

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

A visszaadott oszlopok a következők:

oszlop Description
Package A telepített csomag neve.
verzió A csomag verziója.
Attól függ. Felsorolja azokat a csomagokat, amelyektől a telepített csomag függ.
Licenc A telepített csomag licence.
LibPath Könyvtár, ahol megtalálhatja a csomagot.

Telepített csomagok Pythonhoz

Tekintse meg az SQL Server Machine Learning Servicesben telepített Python-csomagokat.

Kimenet a Python-lekérdezés telepített csomagjaiból

Futtassa az alábbi lekérdezést a kimenet lekéréséhez. A lekérdezés egy Python-szkripttel határozza meg az SQL Serverrel telepített Python-csomagokat.

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

A visszaadott oszlopok a következők:

oszlop Description
Package A telepített csomag neve.
verzió A csomag verziója.
Elhelyezkedés Könyvtár, ahol megtalálhatja a csomagot.

Következő lépések