Sql server 2016 incluye características para ejecutar scripts de analítica avanzada dentro de la base de datos estos scripts son basados en el lenguaje R.
En este blog post vamos a ver cuáles son las vistas administrativas que podemos utilizar para poder monitorear el desempeño de nuestro servidor.
estas vistas administrativas nos dan información acerca de la cantidad de Script que se están ejecutando en este momento así como la duración de cada uno de ellos, de esta forma podemos determinar Cuál es el impacto que tiene la ejecución de Scripts de R dentro de nuestra instancia de base de datos.
A continuación mostramos las vistas administrativas más comunes para monitorear el desempeño de los R Scripts.
-- DMV sys.dm_os_performance_counters
-- esta vista devuelve una fila por cada contador de desempeño que está siendo utilizado dentro del servidor
--Total Executions: Indica la cantidad de procesos iniciados localmente o de forma remota
--Parallel Executions: indica la cantidad de veces que un script incluye una especificación de ejecución en paralelo
--Streaming Executions: indica la cantidad de veces que fue utilizado la función de flujo de datos
--SQL CC Executions: esta columna indica la cantidad de R Scripts que fueron iniciados remotamente y que se utilizó a sql server como un contexto de ejecución
--Implied Auth. Logins: esta columna nos indica la cantidad de veces que se utilizó autenticación implícita
--Total Execution Time (ms): esta columna indica el tiempo que duró la ejecución desde su llamada hasta la finalización de la ejecución como tal
--Execution Errors: indica la cantidad de errores que se presentaron durante la ejecución del script.
SELECT * from sys.dm_os_performance_counters
WHERE object_name LIKE '%Scripts%'
-- DMV sys.dm_external_script_requests
-- This DMV reports a single row for each worker account that is currently
-- running an external script. Note that this worker account is different
-- from the credentials of the person sending the script. If a single Windows user
-- sends multiple script requests, only one worker account would be assigned to handle
-- all requests from that user. If a different Windows user logs in to run an external script
-- the request would be handled by a separate worker account.
-- OUTPUT
-- external_script_request_id: A GUID, which is also used as the temporary name of the working directory used to store scripts and intermediate results.
-- language: A value such as R that denotes the language of the external script.
-- degree_of_parallelism: An integer indicating the number of parallel processes that were used.
-- external_user_name: A Launchpad worker account, such as SQLRUser01.
SELECT external_script_request_id
, [language]
, degree_of_parallelism
, external_user_name
FROM sys.dm_external_script_requests;
-- get info about running scripts
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.reads, r.logical_reads, r.writes
, er.language as script_type, er.degree_of_parallelism, er.external_user_name
from sys.dm_exec_requests as r
join sys.dm_external_script_requests as er
on r.external_script_request_id = er.external_script_request_id
join sys.dm_exec_sessions as s
on s.session_id = r.session_id
-- DMV sys.dm_external_script_execution_stats
-- Returns one row for each type of external script request.
-- language -> Name of the registered external script language. Each external script must specify the language in the script request to start the associated launcher.
-- counter_name -> Name of a registered external script function. Is not nullable.
-- counter_value -> Total number of instances that the registered external script function has been called on the server. This value is cumulative, beginning with the time that the feature was installed on the instance, and cannot be reset.
SELECT counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE language = 'R';
Comments