Memantau SQL Server Layanan Pembelajaran Mesin menggunakan tampilan manajemen dinamis (DMV)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance

Gunakan tampilan manajemen dinamis (DMV) untuk memantau eksekusi skrip eksternal (Python dan R), sumber daya yang digunakan, mendiagnosis masalah, dan menyetel performa dalam SQL Server Machine Learning Services.

Dalam artikel ini, Anda akan menemukan DMV yang khusus untuk SQL Server Machine Learning Services. Anda juga akan menemukan contoh kueri yang menunjukkan:

  • Pengaturan dan opsi konfigurasi untuk pembelajaran mesin
  • Sesi aktif yang menjalankan skrip Python atau R eksternal
  • Statistik eksekusi untuk runtime eksternal untuk Python dan R
  • Penghitung kinerja untuk skrip eksternal
  • Penggunaan memori untuk OS, SQL Server, dan kumpulan sumber daya eksternal
  • Konfigurasi memori untuk SQL Server dan kumpulan sumber daya eksternal
  • Resource Governor kumpulan sumber daya, termasuk kumpulan sumber daya eksternal
  • Paket terinstal untuk Python dan R

Untuk informasi umum selengkapnya tentang DMV, lihat Tampilan Manajemen Dinamis Sistem.

Tip

Anda juga dapat menggunakan laporan kustom untuk memantau SQL Server Machine Learning Services. Untuk informasi selengkapnya, lihat Memantau pembelajaran mesin menggunakan laporan kustom di Management Studio.

Tampilan manajemen dinamis

Tampilan manajemen dinamis berikut dapat digunakan saat memantau beban kerja pembelajaran mesin di SQL Server. Untuk mengkueri DMV, Anda memerlukan VIEW SERVER STATE izin pada instans.

Tampilan manajemen dinamis Jenis Deskripsi
sys.dm_external_script_requests Eksekusi Mengembalikan baris untuk setiap akun pekerja aktif yang menjalankan skrip eksternal.
sys.dm_external_script_execution_stats Eksekusi Mengembalikan satu baris untuk setiap jenis permintaan skrip eksternal.
sys.dm_os_performance_counters Eksekusi Mengembalikan baris per penghitung kinerja yang dikelola oleh server. Jika Anda menggunakan kondisi WHERE object_name LIKE '%External Scripts%'pencarian , Anda dapat menggunakan informasi ini untuk melihat berapa banyak skrip yang dijalankan, skrip mana yang dijalankan menggunakan mode autentikasi mana, atau berapa banyak panggilan R atau Python yang dikeluarkan pada instans secara keseluruhan.
sys.dm_resource_governor_external_resource_pools Resource Governor Mengembalikan informasi tentang status kumpulan sumber daya eksternal saat ini dalam Resource Governor, konfigurasi kumpulan sumber daya saat ini, dan statistik kumpulan sumber daya.
sys.dm_resource_governor_external_resource_pool_affinity Resource Governor Mengembalikan informasi afinitas CPU tentang konfigurasi kumpulan sumber daya eksternal saat ini di Resource Governor. Mengembalikan satu baris per penjadwal di SQL Server di mana setiap penjadwal dipetakan ke prosesor individual. Gunakan tampilan ini untuk memantau kondisi penjadwal atau untuk mengidentifikasi tugas pelarian.

Untuk informasi tentang memantau instans SQL Server, lihat Tampilan Katalog dan Resource Governor Tampilan Manajemen Dinamis Terkait.

Pengaturan dan konfigurasi

Lihat pengaturan penginstalan dan opsi konfigurasi Layanan Pembelajaran Mesin.

Output dari pengaturan dan output kueri konfigurasi

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan dan fungsi yang digunakan, lihat sys.dm_server_registry, sys.configurations, dan 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';

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
IsMLServicesInstalled Mengembalikan 1 jika SQL Server Machine Learning Services diinstal untuk instans. Jika tidak, mengembalikan 0.
ExternalScriptsEnabled Mengembalikan 1 jika skrip eksternal diaktifkan untuk instans. Jika tidak, mengembalikan 0.
ImpliedAuthenticationEnabled Mengembalikan 1 jika autentikasi tersirat diaktifkan. Jika tidak, mengembalikan 0. Konfigurasi untuk autentikasi tersirat diperiksa dengan memverifikasi apakah login ada untuk SQLRUserGroup.
IsTcpEnabled Mengembalikan 1 jika protokol TCP/IP diaktifkan untuk instans. Jika tidak, mengembalikan 0. Untuk informasi selengkapnya, lihat Konfigurasi Protokol Jaringan SQL Server Default.

Sesi aktif

Lihat sesi aktif yang menjalankan skrip eksternal.

Output dari kueri pengaturan aktif

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan manajemen dinamis yang digunakan, lihat sys.dm_exec_requests, sys.dm_external_script_requests, dan 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;

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
id_sesi Mengidentifikasi sesi yang terkait dengan setiap koneksi utama aktif.
blocking_session_id ID sesi yang memblokir permintaan. Jika kolom ini NULL, permintaan tidak diblokir, atau informasi sesi sesi pemblokiran tidak tersedia (atau tidak dapat diidentifikasi).
status Status permintaan.
nama_database Nama database saat ini untuk setiap sesi.
login_name SQL Server nama masuk tempat sesi sedang dijalankan.
wait_time Jika permintaan saat ini diblokir, kolom ini mengembalikan durasi dalam milidetik, dari waktu tunggu saat ini. Tidak dapat diubah ke null.
wait_type Jika permintaan saat ini diblokir, kolom ini mengembalikan jenis tunggu. Untuk informasi tentang jenis tunggu, lihat sys.dm_os_wait_stats.
last_wait_type Jika permintaan ini sebelumnya telah diblokir, kolom ini mengembalikan jenis penantian terakhir.
total_elapsed_time Total waktu berlalu dalam milidetik sejak permintaan tiba.
cpu_time Waktu CPU dalam milidetik yang digunakan oleh permintaan.
baca Jumlah bacaan yang dilakukan oleh permintaan ini.
logical_reads Jumlah pembacaan logis yang telah dilakukan oleh permintaan.
tulis Jumlah penulisan yang dilakukan oleh permintaan ini.
bahasa Kata kunci yang mewakili bahasa skrip yang didukung.
degree_of_parallelism Angka yang menunjukkan jumlah proses paralel yang dibuat. Nilai ini mungkin berbeda dari jumlah proses paralel yang diminta.
external_user_name Akun pekerja Windows tempat skrip dijalankan.

Statistik eksekusi

Lihat statistik eksekusi untuk runtime eksternal untuk R dan Python. Hanya statistik fungsi Paket RevoScaleR, revoscalepy, atau microsoftml yang saat ini tersedia.

Output dari output kueri statistik eksekusi

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan manajemen dinamis yang digunakan, lihat sys.dm_external_script_execution_stats. Kueri hanya mengembalikan fungsi yang telah dijalankan lebih dari sekali.

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

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
bahasa Nama bahasa skrip eksternal yang terdaftar.
counter_name Nama fungsi skrip eksternal terdaftar.
counter_value Jumlah total instans yang telah dipanggil oleh fungsi skrip eksternal terdaftar di server. Nilai ini bersifat kumulatif, dimulai dengan waktu fitur diinstal pada instans, dan tidak dapat direset.

Penghitung kinerja

Lihat penghitung kinerja yang terkait dengan eksekusi skrip eksternal.

Output dari kueri penghitung kinerja

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan manajemen dinamis yang digunakan, lihat 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 menghasilkan penghitung kinerja berikut untuk skrip eksternal:

Penghitung Deskripsi
Total Eksekusi Jumlah proses eksternal yang dimulai oleh panggilan lokal atau jarak jauh.
Eksekusi Paralel Berapa kali skrip menyertakan spesifikasi @parallel dan SQL Server tersebut dapat menghasilkan dan menggunakan rencana kueri paralel.
Eksekusi Streaming Berapa kali fitur streaming telah dipanggil.
Eksekusi SQL CC Jumlah skrip eksternal yang dijalankan di mana panggilan dibuat dari jarak jauh dan SQL Server digunakan sebagai konteks komputasi.
Autentikasi Tersirat. Masuk Berapa kali panggilan loopback ODBC dilakukan menggunakan autentikasi tersirat; yaitu, SQL Server menjalankan panggilan atas nama pengguna yang mengirim permintaan skrip.
Total Waktu Eksekusi (md) Waktu berlalu antara panggilan dan penyelesaian panggilan.
Kesalahan Eksekusi Berapa kali skrip melaporkan kesalahan. Jumlah ini tidak termasuk kesalahan R atau Python.

Penggunaan memori

Lihat informasi tentang memori yang digunakan oleh OS, SQL Server, dan kumpulan eksternal.

Output dari kueri penggunaan memori

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan manajemen dinamis yang digunakan, lihat sys.dm_resource_governor_external_resource_pools dan 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;

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
physical_memory_kb Jumlah total memori fisik pada komputer.
committed_kb Memori yang diterapkan dalam kilobyte (KB) di manajer memori. Tidak termasuk memori yang dipesan di manajer memori.
external_pool_peak_memory_kb Jumlah jumlah maksimum memori yang digunakan, dalam kilobyte, untuk semua kumpulan sumber daya eksternal.

Konfigurasi memori

Lihat informasi tentang konfigurasi memori maksimum dalam persentase SQL Server dan kumpulan sumber daya eksternal. Jika SQL Server berjalan dengan nilai max server memory (MB)default , itu dianggap sebagai 100% dari memori OS.

Output dari kueri konfigurasi memori

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan yang digunakan, lihat sys.configurations dan 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;

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
nama Nama kumpulan sumber daya eksternal atau SQL Server.
max_memory_percent Memori maksimum yang dapat digunakan SQL Server atau kumpulan sumber daya eksternal.

Pusat sumber daya

Dalam SQL Server Resource Governor, kumpulan sumber daya mewakili subset sumber daya fisik instans. Anda dapat menentukan batasan jumlah CPU, IO fisik, dan memori yang diminta aplikasi masuk, termasuk eksekusi skrip eksternal, dapat digunakan dalam kumpulan sumber daya. Lihat kumpulan sumber daya yang digunakan untuk SQL Server dan skrip eksternal.

Output dari kueri kumpulan sumber daya

Jalankan kueri di bawah ini untuk mendapatkan output ini. Untuk informasi selengkapnya tentang tampilan manajemen dinamis yang digunakan, lihat sys.dm_resource_governor_resource_pools dan 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;

Kueri mengembalikan kolom berikut:

Kolom Deskripsi
pool_name Nama kumpulan sumber daya. SQL Server kumpulan sumber daya diawali dengan SQL Server dan kumpulan sumber daya eksternal diawali dengan External Pool.
total_cpu_usage_hours Penggunaan CPU kumulatif dalam milidetik sejak statistik Resource Governor direset.
read_io_completed_total Total IO baca selesai sejak statistik Resource Governor direset.
write_io_completed_total Total IO tulis selesai sejak statistik Resource Governor direset.

Paket yang terpasang

Anda dapat melihat paket R dan Python yang diinstal di SQL Server Machine Learning Services dengan menjalankan skrip R atau Python yang menghasilkan ini.

Paket terinstal untuk R

Lihat paket R yang diinstal di SQL Server Machine Learning Services.

Output dari paket yang diinstal untuk Output kueri R

Jalankan kueri di bawah ini untuk mendapatkan output ini. Kueri menggunakan skrip R untuk menentukan paket R yang diinstal dengan 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)));

Kolom yang dikembalikan adalah:

Kolom Deskripsi
Paket Nama paket yang diinstal.
Versi Versi paket.
Bergantung Mencantumkan paket yang bergantung pada paket yang diinstal.
Lisensi Lisensi untuk paket yang diinstal.
LibPath Direktori tempat Anda dapat menemukan paket.

Paket terinstal untuk Python

Lihat paket Python yang diinstal di SQL Server Machine Learning Services.

Output dari paket yang diinstal untuk Output kueri Python

Jalankan kueri di bawah ini untuk mendapatkan output ini. Kueri menggunakan skrip Python untuk menentukan paket Python yang diinstal dengan 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)));

Kolom yang dikembalikan adalah:

Kolom Deskripsi
Paket Nama paket yang diinstal.
Versi Versi paket.
Lokasi Direktori tempat Anda dapat menemukan paket.

Langkah berikutnya