Aracılığıyla paylaş


Dinamik yönetim görünümlerini (DMV) kullanarak SQL Server Machine Learning Services'i izleme

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL Yönetilen Örnek

Dış betiklerin (Python ve R), kullanılan kaynakların yürütülmesini izlemek, sorunları tanılamak ve SQL Server Machine Learning Services performansını ayarlamak için dinamik yönetim görünümlerini (DMV) kullanın.

Bu makalede, SQL Server Machine Learning Services'e özgü DMV'leri bulacaksınız. Ayrıca şunları gösteren örnek sorgular da bulabilirsiniz:

  • Makine öğrenmesi için ayarlar ve yapılandırma seçenekleri
  • Dış Python veya R betikleri çalıştıran etkin oturumlar
  • Python ve R için dış çalışma zamanı yürütme istatistikleri
  • Dış betikler için performans sayaçları
  • İşletim sistemi, SQL Server ve dış kaynak havuzları için bellek kullanımı
  • SQL Server ve dış kaynak havuzları için bellek yapılandırması
  • Dış kaynak havuzları da dahil olmak üzere Resource Governor kaynak havuzları
  • Python ve R için yüklü paketler

DMV'ler hakkında daha fazla genel bilgi için bkz. Sistem Dinamik Yönetim Görünümleri.

Tavsiye

Sql Server Machine Learning Services'ı izlemek için özel raporları da kullanabilirsiniz. Daha fazla bilgi için bkz. Management Studio'da özel raporları kullanarak makine öğrenmesini izleme.

Dinamik yönetim görünümleri

SQL Server'da makine öğrenmesi iş yükleri izlenirken aşağıdaki dinamik yönetim görünümleri kullanılabilir. DMV'leri sorgulamak için örnekte VIEW SERVER STATE iznine sahip olmanız gerekir.

Dinamik yönetim görünümü Türü Description
sys.dm_external_script_requests Execution Dış betik çalıştıran her etkin çalışan hesabı için bir satır döndürür.
sys.dm_external_script_execution_stats Execution Her dış betik isteği türü için bir satır döndürür.
sys.dm_os_performance_counters Execution Sunucu tarafından tutulan performans sayacı başına bir satır döndürür. arama koşulunu WHERE object_name LIKE '%External Scripts%'kullanıyorsanız, bu bilgileri kaç betiğin çalıştırıldığını, hangi betiklerin hangi kimlik doğrulama modu kullanılarak çalıştırıldığını veya örnekte genel olarak kaç R veya Python çağrısı verildiğini görmek için kullanabilirsiniz.
sys.dm_resource_governor_external_resource_pools Kaynak Yöneticisi Resource Governor'daki geçerli dış kaynak havuzu durumu, kaynak havuzlarının geçerli yapılandırması ve kaynak havuzu istatistikleri hakkında bilgi döndürür.
sys.dm_resource_governor_external_resource_pool_affinity Kaynak Yöneticisi Resource Governor'daki geçerli dış kaynak havuzu yapılandırması hakkında CPU benzenşimi bilgilerini döndürür. SQL Server'da her zamanlayıcının tek bir işlemciye eşlendiği zamanlayıcı başına bir satır döndürür. Zamanlayıcının koşulunu izlemek veya kaçak görevleri tanımlamak için bu görünümü kullanın.

SQL Server örneklerini izleme hakkında bilgi için bkz. Katalog Görünümleri ve Resource Governor İlgili Dinamik Yönetim Görünümleri.

Ayarlar ve yapılandırma

Machine Learning Services yükleme ayarını ve yapılandırma seçeneklerini görüntüleyin.

Ayarlar ve yapılandırma sorgusunun çıktısı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan görünümler ve işlevler hakkında daha fazla bilgi için bkz. sys.dm_server_registry, sys.configurations ve 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';

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
IsMLServicesInstalled Örnek için SQL Server Machine Learning Services yüklüyse 1 döndürür. Aksi takdirde 0 olarak döndürür.
ExternalScriptsEnabled Örnek için dış betikler etkinleştirildiyse 1 döndürür. Aksi takdirde 0 döndürür.
İma Edilen Kimlik Doğrulaması Etkin Zımni kimlik doğrulaması etkinleştirildiyse, 1 değerini döndürür. Aksi takdirde 0 döndürür. SQLRUserGroup için bir oturum açma bilgisinin mevcudiyeti doğrulanarak zımni kimlik doğrulaması yapılandırması kontrol ediliyor.
TcpEtkinMi Örnek için TCP/IP protokolü etkinleştirilmişse 1 döndürür. Aksi takdirde 0 döndürür. Daha fazla bilgi için bkz. Varsayılan SQL Server Ağ Protokolü Yapılandırması.

Etkin oturumlar

Dış betikleri çalıştıran etkin oturumları görüntüleyin.

Etkin ayarlar sorgusundan çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan dinamik yönetim görünümleri hakkında daha fazla bilgi için bkz. sys.dm_exec_requests, sys.dm_external_script_requests ve 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;

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
session_id Her etkin birincil bağlantıyla ilişkili oturumu tanımlar.
engelleyen_oturum_kimliği İsteği engelleyen oturumun kimliği. Bu sütun NULL ise, istek engellenmez veya engelleme oturumunun oturum bilgileri kullanılamaz (veya tanımlanamaz).
statü İsteğin durumu.
veritabanı_adı Her oturum için geçerli veritabanının adı.
kullanıcı adı Oturumun yürütülmekte olduğu SQL Server oturum açma adı.
bekleme süresi İstek şu anda engellenmişse, bu sütun geçerli beklemenin süresini milisaniye cinsinden döndürür. Null olamaz.
wait_type İstek şu anda engellenmişse, bu sütun bekleme türünü döndürür. Bekleme türleri hakkında bilgi için bkz. sys.dm_os_wait_stats.
son_bekleme_tipi Bu istek daha önce engellenmişse, bu sütun son beklemenin türünü döndürür.
toplam_geçen_zaman İsteğin gelmesinden bu yana geçen toplam süre milisaniye cinsindendir.
CPU zamanı İstek tarafından kullanılan milisaniye cinsinden CPU süresi.
okuma Bu istek tarafından gerçekleştirilen okuma sayısı.
logical_reads İstek tarafından gerçekleştirilen mantıksal okuma sayısı.
yazma Bu istek tarafından gerçekleştirilen yazma sayısı.
language Desteklenen bir betik dilini temsil eden anahtar sözcük.
paralellik derecesi Oluşturulan paralel işlemlerin sayısını gösteren sayı. Bu değer, istenen paralel işlemlerin sayısından farklı olabilir.
external_user_name Betiğin yürütüldiği Windows çalışan hesabı.

Yürütme istatistikleri

R ve Python için dış çalışma zamanının yürütme istatistiklerini görüntüleyin. Şu anda yalnızca RevoScaleR, revoscalepy veya microsoftml paket işlevlerine ilişkin istatistikler kullanılabilir.

Yürütme istatistikleri sorgusunun çıktısı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan dinamik yönetim görünümü hakkında daha fazla bilgi için bkz. sys.dm_external_script_execution_stats. Sorgu yalnızca birden çok kez yürütülen işlevleri döndürür.

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

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
language Kayıtlı dış betik dilinin adı.
counter_name Kayıtlı bir dış betik işlevinin adı.
counter_value Sunucuda kayıtlı dış betik işlevinin çağrıldığı toplam örnek sayısı. Bu değer, özelliğin örneğe yüklendiği zamandan başlayarak topludur ve sıfırlanamaz.

Performans sayaçları

Dış betiklerin yürütülmesiyle ilgili performans sayaçlarını görüntüleyin.

Performans sayaçları sorgusundan çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan dinamik yönetim görünümü hakkında daha fazla bilgi için bkz. 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 dış betikler için aşağıdaki performans sayaçlarını oluşturur:

Counter Description
Toplam Yürütme Yerel veya uzak çağrılar tarafından başlatılan dış işlemlerin sayısı.
Paralel Yürütmeler @parallel belirtiminin kaç kez dahil edildiği ve SQL Server'ın paralel sorgu planı oluşturup kullandığı.
Akışlı İşlemler Akış özelliğinin çağrılma sayısı.
SQL CC Yürütmeleri Çağrının uzaktan örneklendiği ve işlem bağlamı olarak SQL Server'ın kullanıldığı çalıştırılan dış betiklerin sayısı.
Zımni Kimlik Doğrulama Oturumları Bir ODBC geri döngü çağrısının zımni kimlik doğrulaması kullanılarak kaç kez yapıldığı; yani SQL Server, betik isteğini gönderen kullanıcı adına aramayı yürütür.
Toplam Yürütme Süresi (ms) Arama ile çağrının tamamlanması arasında geçen süre.
Yürütme Hataları Betiklerin hata bildirme sayısı. Bu sayı R veya Python hatalarını içermez.

Bellek kullanımı

İşletim sistemi, SQL Server ve dış havuzlar tarafından kullanılan bellek hakkındaki bilgileri görüntüleyin.

Bellek kullanım sorgusundan çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan dinamik yönetim görünümleri hakkında daha fazla bilgi için bkz. sys.dm_resource_governor_external_resource_pools ve 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;

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
physical_memory_kb Makinedeki toplam fiziksel bellek miktarı.
committed_kb Bellek yöneticisinde kilobayt (KB) cinsinden taahhüt edilmiş bellek. Bellek yöneticisi rezerve edilmiş belleği hariç tutar.
external_pool_peak_memory_kb Tüm dış kaynak havuzları için kullanılan en fazla bellek miktarının (kilobayt cinsinden) toplamı.

Bellek yapılandırması

SQL Server ve dış kaynak havuzlarının yüzdesi cinsinden en yüksek bellek yapılandırması hakkındaki bilgileri görüntüleyin. SQL Server varsayılan değeriyle max server memory (MB)çalışıyorsa, işletim sistemi belleğinin 100% olarak kabul edilir.

Bellek yapılandırma sorgusundan çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan görünümler hakkında daha fazla bilgi için bkz . sys.configurations ve 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;

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
name Dış kaynak havuzunun veya SQL Server'ın adı.
max_memory_percent SQL Server veya dış kaynak havuzunun kullanabileceği en yüksek bellek.

Kaynak havuzları

SQL Server Resource Governor'dakaynak havuzu, örneğin fiziksel kaynaklarının bir alt kümesini temsil eder. Dış betiklerin yürütülmesi de dahil olmak üzere gelen uygulama isteklerinin kaynak havuzu içinde kullanabileceği CPU, fiziksel GÇ ve bellek miktarıyla ilgili sınırlar belirtebilirsiniz. SQL Server ve dış betikler için kullanılan kaynak havuzlarını görüntüleyin.

Kaynak havuzları sorgusundan çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Kullanılan dinamik yönetim görünümleri hakkında daha fazla bilgi için bkz. sys.dm_resource_governor_resource_pools ve 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;

Sorgu aşağıdaki sütunları döndürür:

Köşe yazısı Description
pool_name Kaynak havuzunun adı. SQL Server kaynak havuzlarının ön eki SQL Server ve dış kaynak havuzlarının ön eki External Poolvardır.
toplam_cpu_kullanım_saatleri Resource Governor istatistikleri sıfırlandığından bu yana milisaniye cinsinden birikmeli CPU kullanımı.
okuma_io_tamamlanan_toplam Resource Governor istatistikleri sıfırlandığından bu yana tamamlanan toplam okuma IO’ları.
yazma_girdi_çıktı_tamamlanmış_toplam Resource Governor istatistikleri sıfırlandığından bu yana tamamlanan toplam yazma girdi/çıktı işlemleri.

Yüklü paketler

Bunları veren bir R veya Python betiği yürüterek SQL Server Machine Learning Services'a yüklenen R ve Python paketlerini görüntüleyebilirsiniz.

R için yüklü paketler

SQL Server Machine Learning Services'da yüklü R paketlerini görüntüleyin.

R sorgusu için yüklü paketlerin çıktısı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Sorgu, SQL Server ile yüklenen R paketlerini belirlemek için bir R betiği kullanır.

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

Döndürülen sütunlar şunlardır:

Köşe yazısı Description
Package Yüklü paketin adı.
Sürüm Paketin sürümü.
Depends Yüklü paketin bağımlı olduğu paketleri listeler.
Lisans Yüklü paketin lisansı.
LibPath Paketi bulabileceğiniz dizin.

Python için yüklü paketler

SQL Server Machine Learning Services'da yüklü Python paketlerini görüntüleyin.

Python sorgusu için yüklü paketlerden çıktı

Bu çıkışı almak için aşağıdaki sorguyu çalıştırın. Sorgu, SQL Server ile yüklenen Python paketlerini belirlemek için bir Python betiği kullanır.

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

Döndürülen sütunlar şunlardır:

Köşe yazısı Description
Package Yüklü paketin adı.
Sürüm Paketin sürümü.
Yer Paketi bulabileceğiniz dizin.

Sonraki Adımlar