Sdílet prostřednictvím


Monitorování služby SQL Server Machine Learning Services pomocí zobrazení dynamické správy (DMV)

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL Managed Instance

Pomocí zobrazení dynamické správy (DMV) můžete monitorovat spouštění externích skriptů (Python a R), používané prostředky, diagnostikovat problémy a ladit výkon ve službě SQL Server Machine Learning Services.

V tomto článku najdete dynamická správa zobrazení (DMVs) specifická pro SQL Server Machine Learning Services. Najdete zde také ukázkové dotazy, které ukazují:

  • Možnosti nastavení a konfigurace pro strojové učení
  • Aktivní relace běžící se spuštěnými externími skripty Pythonu nebo R
  • Statistika spouštění pro externí modul runtime pro Python a R
  • Čítače výkonu pro externí skripty
  • Využití paměti pro operační systém, SQL Server a externí zdrojové fondy
  • Konfigurace paměti pro SQL Server a fondy externích zdrojů
  • Fondy zdrojů správce zdrojů, včetně externích fondů zdrojů
  • Nainstalované balíčky pro Python a R

Další obecné informace o dynamických spravovacích pohledech systému najdete v tématu Dynamické spravovací pohledy systému.

Návod

Můžete také použít vlastní sestavy k monitorování služby SQL Server Machine Learning Services. Další informace najdete v tématu Monitorování strojového učení pomocí vlastních sestav v nástroji Management Studio.

Dynamická zobrazení správy

Při monitorování úloh strojového učení na SQL Serveru je možné použít následující zobrazení dynamické správy. K dotazování zobrazení dynamické správy potřebujete VIEW SERVER STATE oprávnění k instanci.

Zobrazení dynamické správy Typ Description
sys.dm_external_script_requests Execution Vrátí řádek pro každý aktivní pracovní účet, na kterém běží externí skript.
sys.dm_external_script_execution_stats Execution Vrátí jeden řádek pro každý typ požadavku externího skriptu.
sys.dm_os_performance_counters Execution Vrátí řádek pro každý čítač výkonu spravovaný serverem. Pokud použijete vyhledávací podmínku WHERE object_name LIKE '%External Scripts%', můžete pomocí těchto informací zjistit, kolik skriptů se spustilo, které skripty se spustily pomocí jakého režimu ověřování nebo kolik volání R nebo Pythonu bylo vydáno v celé instanci.
sys.dm_resource_governor_external_resource_pools Správce prostředků Vrátí informace o aktuálním stavu fondu externích zdrojů ve správci zdrojů, aktuální konfiguraci fondů zdrojů a statistikách fondu zdrojů.
sys.dm_resource_governor_external_resource_pool_affinity Správce prostředků Vrátí informace o procesorové afinitnosti o aktuální konfiguraci fondu externích prostředků v Resource Governor. Vrátí jeden řádek na každý plánovač v SQL Serveru, kde je každý plánovač namapován na jednotlivý procesor. Toto zobrazení slouží ke sledování stavu plánovače nebo k identifikaci neovladatelných úloh.

Informace o monitorování instancí SQL Server naleznete v tématu Zobrazení katalogu a Zobrazení dynamické správy související se správcem prostředků.

Nastavení a konfigurace

Zobrazení nastavení instalace a možnosti konfigurace služby Machine Learning Services.

Výstup z nastavení a konfiguračního dotazu

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitých zobrazeních a funkcích naleznete v tématu sys.dm_server_registry, sys.configurations a 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';

Dotaz vrátí následující sloupce:

Sloupec Description
IsMLServicesInstalled Vrátí hodnotu 1, pokud je pro instanci nainstalovaná služba SQL Server Machine Learning Services. V opačném případě vrátí hodnotu 0.
PovolenéExterníSkripty Vrátí hodnotu 1, pokud jsou pro instanci povoleny externí skripty. V opačném případě vrátí hodnotu 0.
ImpliedAuthenticationEnabled (Povolená Implicitní Autentizace) Vrátí hodnotu 1, pokud je povolené implicitní ověřování. V opačném případě vrátí hodnotu 0. Konfigurace předpokládaného ověřování se kontroluje ověřením, jestli pro SQLRUserGroup existuje přihlášení.
JeTcpPovoleno Vrátí hodnotu 1, pokud je pro instanci povolený protokol TCP/IP. V opačném případě vrátí hodnotu 0. Další informace naleznete v tématu Výchozí konfigurace protokolu SÍTĚ SYSTÉMU SQL Server.

Aktivní relace

Zobrazte relace, ve kterých probíhají skripty z externích zdrojů.

Výstup z dotazu aktivního nastavení

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitých zobrazeních dynamické správy najdete v tématu sys.dm_exec_requests, sys.dm_external_script_requests a 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;

Dotaz vrátí následující sloupce:

Sloupec Description
identifikátor_sezení Identifikuje relaci přidruženou ke každému aktivnímu primárnímu připojení.
blocking_session_id ID relace, která blokuje požadavek. Pokud je tento sloupec NULL, požadavek není blokován nebo informace o blokující relaci nejsou k dispozici (nebo ji nelze identifikovat).
stav Stav žádosti
název databáze Název aktuální databáze pro každou relaci.
přihlašovací_jméno Přihlašovací jméno SQL Serveru, ve kterém se relace právě spouští.
čekací doba Pokud je požadavek aktuálně blokovaný, vrátí tento sloupec dobu trvání v milisekundách aktuálního čekání. Není možné nastavit jako null.
Čekací_typ Pokud je požadavek aktuálně blokovaný, vrátí tento sloupec typ čekání. Informace o typech čekání najdete v tématu sys.dm_os_wait_stats.
poslední_typ_čekání Pokud byl tento požadavek dříve zablokovaný, vrátí tento sloupec typ posledního čekání.
celkový uplynulý čas Celková doba uplynulá v milisekundách od přijetí požadavku.
čas CPU Čas procesoru v milisekundách, který požadavek používá.
čtení Počet čtení provedených tímto požadavkem
logické čtení (logical_reads) Počet logickýchčteních
zápisy Počet zápisů provedených tímto požadavkem
jazyk Klíčové slovo, které představuje podporovaný skriptovací jazyk.
stupeň paralelismu Číslo označující počet vytvořených paralelních procesů. Tato hodnota se může lišit od počtu požadovaných paralelních procesů.
externí_uživatelské_jméno Pracovní účet Windows, ve kterém byl skript spuštěn.

Statistika provádění

Zobrazte statistiku provádění pro externí modul runtime pro R a Python. Aktuálně jsou k dispozici pouze statistiky funkcí balíčků RevoScaleR, revoscalepy nebo microsoftml.

Výstup z dotazu statistiky provádění

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitém zobrazení dynamické správy najdete v tématu sys.dm_external_script_execution_stats. Dotaz vrací pouze funkce, které byly provedeny více než jednou.

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

Dotaz vrátí následující sloupce:

Sloupec Description
jazyk Název registrovaného jazyka externího skriptu
název_počítadla Název registrované funkce externího skriptu
čítačová_hodnota Celkový počet volání registrované funkce externího skriptu na serveru. Tato hodnota je kumulativní, počínaje časem, kdy byla funkce nainstalována v instanci, a nelze ji resetovat.

Čítače výkonu

Prohlédněte si čítače výkonu související s prováděním externích skriptů.

Výstup dotazu čítačů výkonu

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitém zobrazení dynamické správy najdete v tématu 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 výstupem jsou následující čítače výkonu pro externí skripty:

Counter Description
Celkový počet spuštění Počet externích procesů spuštěných místními nebo vzdálenými voláními
Paralelní spouštění Kolikrát skript zahrnoval specifikaci @parallel a že SQL Server mohl vygenerovat a používat plán paralelního dotazu.
Spouštění streamování Počet vyvolání funkce streamování
Spouštění služby SQL CC Počet spuštěných externích skriptů, ve kterých se volání vytvořilo vzdáleně, a SQL Server se použil jako výpočetní kontext.
Implicitní ověřování. Přihlášení Počet, kolikrát bylo volání zpětné smyčky ODBC provedeno pomocí implicitního ověřování; to znamená, že SQL Server spustil volání jménem uživatele, který odeslal požadavek skriptu.
Celkový čas provedení (ms) Čas uplynul mezi voláním a dokončením hovoru.
Chyby spuštění Počet nahlášených chyb skripty Tento počet nezahrnuje chyby jazyka R nebo Python.

Využití paměti

Zobrazte informace o paměti používané operačním systémem, SQL Serverem a externími pooly.

Výstup dotazu na využití paměti

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitých zobrazeních dynamické správy najdete v tématu sys.dm_resource_governor_external_resource_pools a 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;

Dotaz vrátí následující sloupce:

Sloupec Description
physical_memory_kb Celková velikost fyzické paměti na počítači.
committed_kb Potvrzená paměť ve správci paměti v kilobajtech (KB). Nezahrnuje vyhrazenou paměť ve správci paměti.
external_pool_peak_memory_kb (maximální paměť v kB pro externí pool) Součet maximálního využitého množství paměti v kilobajtech pro všechny fondy externích zdrojů.

Konfigurace paměti

Zobrazit informace o maximální konfiguraci paměti v procentech u SQL Serveru a fondů externích zdrojů. Pokud sql Server běží s výchozí hodnotou max server memory (MB), považuje se za 100% paměti operačního systému.

Výstup z dotazu konfigurace paměti Výstup

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitých zobrazeních najdete v tématu sys.configurations a 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;

Dotaz vrátí následující sloupce:

Sloupec Description
název Název fondu externích zdrojů nebo SQL Serveru
max_memory_percent Maximální paměť, kterou může SQL Server nebo fond externích zdrojů používat.

Fondy zdrojů

Ve správci prostředků SQL Serveru fond zdrojů představuje podmnožinu fyzických prostředků instance. Můžete zadat omezení počtu procesorů, fyzických vstupně-výstupních operací a paměti, které můžou příchozí požadavky aplikace, včetně spouštění externích skriptů, používat v rámci fondu prostředků. Zobrazte fondy zdrojů používané pro SQL Server a externí skripty.

Výstup z dotazu zásobníků zdrojů

Spuštěním následujícího dotazu získáte tento výstup. Další informace o použitých zobrazeních dynamické správy jsou uvedeny v tématu sys.dm_resource_governor_resource_pools a 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;

Dotaz vrátí následující sloupce:

Sloupec Description
název_poolu Název fondu zdrojů Fondy zdrojů SQL Serveru mají předponu SQL Server a fondy externích zdrojů mají předponu External Pool.
celkový počet hodin využití CPU Kumulativní využití procesoru v milisekundách od resetování statistik správce prostředků.
celkový_počet_dokončených_čtení_io Celkový počet operací čtení IO dokončených od resetování statistik správce prostředků.
write_io_completed_total Celkový počet dokončených zápisů IO od resetování statistik Správce prostředků.

Nainstalované balíčky

Balíčky jazyka R a Python nainstalované ve službě SQL Server Machine Learning Services můžete zobrazit spuštěním skriptu R nebo Pythonu, který je vypíše.

Nainstalované balíčky pro R

Zobrazte balíčky R nainstalované ve službě SQL Server Machine Learning Services.

Výstup z nainstalovaných balíčků pro dotazy v R

Spuštěním následujícího dotazu získáte tento výstup. Dotaz používá skript jazyka R k určení balíčků R nainstalovaných s SQL Serverem.

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

Jsou vráceny následující sloupce:

Sloupec Description
Package Název nainstalovaného balíčku.
Version Verze balíčku.
Závisí Zobrazí seznam balíčků, na které nainstalovaný balíček závisí.
Licence Licence pro nainstalovaný balíček.
LibPath Adresář, kde najdete balíček.

Nainstalované balíčky pro Python

Zobrazte balíčky Pythonu nainstalované ve službě SQL Server Machine Learning Services.

Výstup z nainstalovaných balíčků pro dotaz Pythonu

Spuštěním následujícího dotazu získáte tento výstup. Dotaz používá skript Pythonu k určení balíčků Python nainstalovaných s SQL Serverem.

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

Vrácené sloupce:

Sloupec Description
Package Název nainstalovaného balíčku.
Version Verze balíčku.
Umístění Adresář, kde najdete balíček.

Další kroky