Memantau SQL Server Pembelajaran Mesin Services menggunakan tampilan manajemen dinamis (DMV)
Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Managed Instance yang lebih baru
Gunakan tampilan manajemen dinamis (DMV) untuk memantau eksekusi skrip eksternal (Python dan R), sumber daya yang digunakan, mendiagnosis masalah, dan menyetel performa di SQL Server Pembelajaran Mesin Services.
Dalam artikel ini, Anda akan menemukan DMV yang khusus untuk SQL Server Pembelajaran Mesin Services. Anda juga akan menemukan contoh kueri yang menunjukkan:
- Opsi pengaturan dan 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
- Kumpulan sumber daya Resource Governor, 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 Pembelajaran Mesin 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 | Tipe | 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 di 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 tempat 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 Tampilan Manajemen Dinamis Terkait Resource Governor.
Pengaturan dan konfigurasi
Lihat pengaturan penginstalan Pembelajaran Mesin Services dan opsi 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 Pembelajaran Mesin 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.
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. |
database_name | Nama database saat ini untuk setiap sesi. |
login_name | Nama masuk SQL Server tempat sesi sedang dijalankan. |
wait_time | Jika permintaan saat ini diblokir, kolom ini mengembalikan durasi dalam milidetik, dari penantian 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 tunggu 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.
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 diatur ulang. |
Penghitung kinerja
Lihat penghitung kinerja yang terkait dengan eksekusi skrip eksternal.
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 bahwa SQL Server 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; artinya, SQL Server menjalankan panggilan atas nama pengguna yang mengirim permintaan skrip. |
Total Waktu Eksekusi (mdtk) | 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.
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 , SQL Server dianggap sebagai 100% dari memori OS.
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. |
Kumpulan sumber daya
Di 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.
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. Kumpulan sumber daya SQL Server diawali dengan SQL Server dan kumpulan sumber daya eksternal diawali dengan External Pool . |
total_cpu_usage_hours | Penggunaan CPU kumulatif dalam milidetik karena statistik Resource Governor diatur ulang. |
read_io_completed_total | Total IO baca selesai sejak statistik Resource Governor diatur ulang. |
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 Pembelajaran Mesin Services dengan menjalankan skrip R atau Python yang menghasilkan ini.
Paket terinstal untuk R
Lihat paket R yang diinstal di SQL Server Pembelajaran Mesin Services.
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 Pembelajaran Mesin Services.
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. |