Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Managed Instance
Динамические административные представления можно использовать для отслеживания выполнения внешних скриптов (Python и R), мониторинга используемых ресурсов, диагностики проблем и настройки производительности в службах машинного обучения SQL Server.
В этой статье вы найдете динамические административные представления, относящиеся к службам машинного обучения SQL Server. Кроме того, в ней приводятся примеры запросов, которые демонстрируют:
- Настройки и параметры конфигурации для служб машинного обучения
- Активные сеансы, выполняющие внешние скрипты Python или R
- Статистика выполнения для внешней среды выполнения Python и R
- Счетчики производительности для внешних скриптов
- Использование памяти для ОС, SQL Server и внешних пулов ресурсов
- Конфигурация памяти для SQL Server и внешних пулов ресурсов
- Пулы ресурсов регулятора ресурсов, включая внешние пулы ресурсов
- Установленные пакеты для Python и R
Дополнительные общие сведения о динамических административных представлениях см. в разделе Системные динамические административные представления.
Совет
Пользовательские отчеты также можно использовать для наблюдения за службами машинного обучения SQL Server. Дополнительные сведения см. в статье Мониторинг служб машинного обучения с помощью настраиваемых отчетов в Management Studio.
Динамические административные представления
При наблюдении за рабочими нагрузками на службы машинного обучения в SQL Server можно использовать следующие динамические административные представления. Для запроса динамических административных представлений требуется разрешение VIEW SERVER STATE на экземпляр.
| Динамическое административное представление | Тип | Описание |
|---|---|---|
| sys.dm_external_script_requests | Выполнение | Возвращает строку для каждой активной рабочей учетной записи, в которой выполняется внешний скрипт. |
| sys.dm_external_script_execution_stats | Выполнение | Возвращает по одной строке для каждого типа запроса внешнего скрипта. |
| sys.dm_os_performance_counters | Выполнение | Возвращает по строке на каждый счетчик производительности, хранимый на сервере. Если используется условие поиска WHERE object_name LIKE '%External Scripts%', на основе этих сведений можно узнать, сколько скриптов выполнялось, какой режим проверки подлинности использовался для каждого из них или общее количество отправленных вызовов R или Python для экземпляра. |
| sys.dm_resource_governor_external_resource_pools | Управляющий ресурсами | Возвращает информацию о текущем состоянии внешнего пула ресурсов в Resource Governor, текущую конфигурацию пула ресурсов и статистику пула ресурсов. |
| sys.dm_resource_governor_external_resource_pool_affinity | Управляющий ресурсами | Возвращает информацию о текущей конфигурации внешнего пула ресурсов в Resource Governor для фиксирования потоков на ЦП. Возвращает одну строку для планировщика в SQL Server, где каждый планировщик сопоставляется с отдельным процессором. Используйте это представление для мониторинга состояния планировщика или для определения отклонившихся от расписания задач. |
Сведения о мониторинге экземпляров SQL Server см. в разделе "Представления каталога" и "Связанные с регулятором ресурсов" динамические административные представления.
Параметры и конфигурация
Просмотр параметров установки и конфигурации служб машинного обучения.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемых представлениях и функциях см. в разделах sys. dm_server_registry, sys.configurations и 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';
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| IsMLServicesInstalled | Возвращает значение 1, если для экземпляра установлены службы машинного обучения SQL Server. В противном случае возвращается 0. |
| ExternalScriptsEnabled | Возвращает значение 1, если для экземпляра включены внешние скрипты. В противном случае возвращается 0. |
| ImpliedAuthenticationEnabled | Возвращает значение 1, если включена подразумеваемая проверка подлинности. В противном случае возвращается 0. Конфигурация для неявной проверки подлинности проверяется путем проверки наличия имени входа для SQLRUserGroup. |
| IsTcpEnabled | Возвращает значение 1, если для экземпляра включен протокол TCP/IP. В противном случае возвращается 0. Для получения дополнительных сведений см. раздел Конфигурация сетевого протокола SQL Server по умолчанию. |
Активные сеансы
Просмотр активных сеансов, выполняющих внешние скрипты.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемых динамических административных представлениях см. в разделах sys.dm_exec_requests, sys.dm_external_script_requests и 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;
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| session_id | Идентификатор сеанса, связанный со всеми активными первичными соединениями. |
| blocking_session_id | Идентификатор сеанса, блокирующего данный запрос. Если этот столбец содержит значение NULL, то запрос не блокирован или сведения о сеансе блокировки недоступны (или не могут быть идентифицированы). |
| статус | Состояние запроса. |
| database_name | Имя текущей базы данных для каждого сеанса. |
| login_name | Имя входа SQL Server, под которым выполняется текущий сеанс. |
| wait_time | Если запрос в настоящий момент блокирован, в столбце содержится продолжительность текущего ожидания (в миллисекундах). Не допускает значение NULL. |
| wait_type | Если запрос в настоящий момент блокирован, в столбце содержится тип ожидания. Сведения о типах ожиданий см. в разделе sys.dm_os_wait_stats. |
| last_wait_type | Если запрос был блокирован ранее, в столбце содержится тип последнего ожидания. |
| total_elapsed_time | Общее время, истекшее с момента поступления запроса (в миллисекундах). |
| cpu_time | Время ЦП (в миллисекундах), затраченное на выполнение запроса. |
| reads | Число операций чтения, выполненных данным запросом. |
| logical_reads | Число логических операций чтения, выполненных данным запросом. |
| writes | Число операций записи, выполненных данным запросом. |
| язык | Ключевое слово, которое представляет поддерживаемый язык скриптов. |
| degree_of_parallelism | Число, указывающее количество созданных параллельных процессов. Это значение может отличаться от количества запрошенных параллельных процессов. |
| external_user_name | Рабочая учетная запись Windows, под которой был выполнен скрипт. |
Статистика выполнения.
Просмотр статистики выполнения для внешней среды выполнения R и Python. В настоящее время доступна статистика по функциям пакетов RevoScaleR, revoscalepy или microsoftml.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемом динамическом административном представлении см. в разделе sys.dm_external_script_execution_stats. Запрос возвращает только те функции, которые были выполнены несколько раз.
SELECT language, counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE counter_value > 0
ORDER BY language, counter_name;
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| язык | Имя зарегистрированного языка внешних скриптов. |
| counter_name | Имя зарегистрированной функции внешних скриптов. |
| counter_value | Общее количество экземпляров, где вызывалась зарегистрированная функция внешних скриптов на сервере. Данное значение является совокупным (подсчет ведется с момента установки компонента на экземпляре) и не может быть сброшено. |
Счетчики производительности
Просмотр счетчиков производительности, связанных с выполнением внешних скриптов.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемом динамическом административном представлении см. в разделе 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 выдаются следующие счетчики производительности для внешних скриптов:
| Счетчик | Описание |
|---|---|
| Общее количество выполнений | Количество внешний процессов, запущенных с помощью локальных или удаленных вызовов. |
| Параллельное выполнение | Количество раз, когда скрипт включал спецификацию @parallel, и когда SQL Server мог создать и использовать план параллельного запроса. |
| Потоковое выполнение | Сколько раз была вызвана функция потоковой передачи. |
| Выполнение SQL CC | Количество внешний скриптов, в которых вызов был создан удаленно, а SQL Server использовался в качестве контекста вычислений. |
| Подразумеваемая проверка подлинности. Имена входа | Количество раз, когда вызов обратного цикла ODBC был выполнен с помощью подразумеваемой проверки подлинности; То есть SQL Server выполнил вызов от имени пользователя, отправляющего запрос скрипта. |
| Общее время выполнения (мс) | Время, прошедшее между вызовом и его завершением. |
| Ошибки выполнения | Количество ошибок, возникших при выполнении скриптов. Этот счетчик не содержит ошибки R или Python. |
Использование памяти
Просмотр сведений о памяти, используемой ОС, SQL Server и внешними пулами.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемых динамических административных представлениях см. в разделе sys.dm_resource_governor_external_resource_pools и 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;
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| physical_memory_kb | Общий объем физической памяти компьютера. |
| committed_kb | Фиксированная физическая память в килобайтах (КБ) в диспетчере памяти. Не включает зарезервированную память в диспетчере памяти. |
| external_pool_peak_memory_kb | Максимальный суммарный объем памяти (в килобайтах), используемой всеми внешними пулами ресурсов. |
Настройка использования памяти
Просмотр сведений о максимальной конфигурации памяти (в процентах) для SQL Server и внешних пулов ресурсов. Если SQL Server работает со значением max server memory (MB) по умолчанию, оно принимается за 100% памяти ОС.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемых динамических административных представлениях см. в разделе sys.configurations и 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;
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| name | Имя внешнего пула ресурсов или SQL Server. |
| max_memory_percent | Максимальный объем памяти, который может использовать SQL Server или внешний пул ресурсов. |
Пулы ресурсов
В регуляторе ресурсов SQL Serverпул ресурсов представляет подмножество физических ресурсов экземпляра. Вы можете задать ограничения на загрузку ЦП, физические средства ввода-вывода и объем памяти, доступный для входящих запросов приложений, включая выполнение внешних скриптов, в пуле ресурсов. Просмотр пулов ресурсов, используемых для SQL Server и внешних скриптов.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. Дополнительные сведения об используемых динамических административных представлениях см. в разделах sys.dm_resource_governor_resource_pools и 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;
Этот запрос возвращает следующие столбцы:
| Столбец | Описание |
|---|---|
| pool_name | Имя пула ресурсов. Пулы ресурсов SQL Server имеют префикс SQL Server, а внешние пулы ресурсов — префикс External Pool. |
| total_cpu_usage_hours | Совокупное использование ЦП (в миллисекундах) с момента сброса статистики Resource Governor. |
| read_io_completed_total | Общее число завершенных операций ввода-вывода чтения с момента сброса статистики Resource Governor. |
| write_io_completed_total | Общее число завершенных операций ввода-вывода записи с момента сброса статистики Resource Governor. |
Установленные пакеты
Вы можете узнать, какие пакеты R и Python установлены в службах машинного обучения SQL Server, выполнив сценарий R или Python, который выводит эти данные.
Установленные пакеты для R
Просмотр пакетов R, установленных в службах машинного обучения SQL Server.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. В запросе используется скрипт R, позволяющий определить, какие пакеты R установлены в 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)));
Возвращаются следующие столбцы:
| Столбец | Описание |
|---|---|
| Пакет | Имя установленного пакета. |
| Версия | Версия пакета. |
| Зависит | Выводит список пакетов, от которых зависит установленный пакет. |
| Лицензия | Лицензия установленного пакета. |
| LibPath | Каталог, в котором находится пакет. |
Установленные пакеты для Python
Просмотр пакетов Python, установленных в службах машинного обучения SQL Server.
Чтобы получить эти выходные данные, выполните приведенный ниже запрос. В запросе используется скрипт Python, позволяющий определить, какие пакеты Python установлены в 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)));
Возвращаются следующие столбцы:
| Столбец | Описание |
|---|---|
| Пакет | Имя установленного пакета. |
| Версия | Версия пакета. |
| Расположение | Каталог, в котором находится пакет. |