Tutorial: Ejemplos de configuración del regulador de recursos y procedimientos recomendados
se aplica a:SQL Server
azure SQL Managed Instance
Este artículo contiene ejemplos de tutoriales que le ayudarán a configurar el regulador de recursos y validar que la configuración funciona según lo previsto. Comienza con un ejemplo sencillo y avanza a los más complejos.
En el artículo también se incluyen ejemplos de consultas de supervisión del regulador de recursos y una lista de procedimientos recomendados del regulador de recursos.
En todos los ejemplos se supone que inicialmente, el regulador de recursos está deshabilitado y usa la configuración predeterminada, y que no existen grupos de recursos, grupos de cargas de trabajo y funciones clasificadoras definidas por el usuario.
Nota
Para modificar la configuración del regulador de recursos en Instancia administrada de Azure SQL, debe estar en el contexto de la base de datos master
en la réplica principal.
Modificación del grupo predeterminado
En este ejemplo se usa el regulador de recursos para limitar el tamaño máximo de una concesión de memoria para todas las consultas de usuario. Para ello, se reduce la configuración REQUEST_MAX_MEMORY_GRANT_PERCENT
del grupo de cargas de trabajo default
del 25 % al 10 % predeterminado. En el ejemplo no se usa una función clasificadora . Esto significa que el procesamiento de inicio de sesión no se ve afectado y todas las sesiones de usuario se siguen clasificando en el grupo de cargas de trabajo de default
.
Es posible que tenga que limitar el tamaño de las concesiones de memoria si las consultas esperan memoria porque otras consultas reservan demasiada memoria. Para obtener más información, consulte Solución de problemas de rendimiento lento o poca memoria causados por concesiones de memoria en SQL Server.
Modifique el grupo de cargas de trabajo predeterminado.
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10);
Active el regulador de recursos para que la configuración sea eficaz.
ALTER RESOURCE GOVERNOR RECONFIGURE;
Valide la nueva configuración, incluido el nuevo tamaño máximo de una concesión de memoria.
SELECT group_id, wg.name AS workload_group_name, rp.name AS resource_pool_name, wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_percent, rp.max_memory_kb * wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_size_kb FROM sys.resource_governor_workload_groups AS wg INNER JOIN sys.dm_resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id;
Para revertir a la configuración inicial, ejecute el siguiente script:
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 25); ALTER RESOURCE GOVERNOR RECONFIGURE; ALTER RESOURCE GOVERNOR DISABLE;
Uso de un grupo de cargas de trabajo definido por el usuario
En este ejemplo se usa el regulador de recursos para asegurarse de que todas las solicitudes en sesiones con un nombre de aplicación específico no se ejecuten con un grado de paralelismo (DOP) superior a cuatro. Para ello, se clasifican las sesiones en un grupo de cargas de trabajo con la configuración de MAX_DOP
establecida en 4.
Para obtener más información sobre cómo configurar el grado máximo de paralelismo, consulte Configuración del servidor: grado máximo de paralelismo.
Cree un grupo de cargas de trabajo que limite el DOP. El grupo usa el grupo de recursos de
default
porque solo queremos limitar DOP para una aplicación específica, pero no reservar ni limitar recursos de CPU, memoria o E/S.CREATE WORKLOAD GROUP limit_dop WITH ( MAX_DOP = 4 ) USING [default];
Cree la función clasificadora. La función usa la función APP_NAME() integrada para determinar el nombre de la aplicación especificado en la cadena de conexión del cliente. Si el nombre de la aplicación se establece en
limited_dop_application
, la función devuelve el nombre del grupo de cargas de trabajo que limita DOP. De lo contrario, la función devuelvedefault
como nombre del grupo de cargas de trabajo.USE master; GO CREATE FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; IF APP_NAME() = N'limited_dop_application' SELECT @WorkloadGroupName = N'limit_dop'; RETURN @WorkloadGroupName; END; GO
Modifique la configuración del regulador de recursos para que la configuración sea eficaz y habilite el regulador de recursos.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
Consulte sys.resource_governor_configuration para validar que el regulador de recursos está habilitado y usa la función clasificadora que creamos.
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name, OBJECT_NAME(classifier_function_id) AS classifier_object_name, is_enabled FROM sys.resource_governor_configuration;
classifier_schema_name classifier_object_name is_enabled ---------------------- ---------------------- ---------- dbo rg_classifier 1
Compruebe que las sesiones con un nombre de aplicación específico se clasifican en el grupo de cargas de trabajo de
limit_dop
, mientras que otras sesiones siguen estando clasificadas en el grupo de cargas de trabajo dedefault
. Usaremos una consulta que utiliza las vistas del sistema sys.dm_exec_sessions y sys.resource_governor_workload_groups para devolver el nombre de la aplicación y del grupo de cargas de trabajo de la sesión actual.En SQL Server Management Studio (SSMS), seleccione Archivo en el menú principal, Nuevo, Consulta del motor de base de datos.
En el cuadro de diálogo Conectar al motor de base de datos, especifique la misma instancia del motor de base de datos donde creó el grupo de cargas de trabajo y la función clasificadora. Seleccione la pestaña Parámetros de conexión adicionales y escriba
App=limited_dop_application
. Esto hace que SSMS uselimited_dop_application
como nombre de aplicación al conectarse a la instancia.Seleccione Conectar para abrir una nueva conexión.
En la misma ventana de consulta, ejecute la consulta siguiente:
SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.max_dop FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id WHERE s.session_id = @@SPID;
Deberías ver el siguiente resultado, que muestra que la sesión se clasificó en el grupo de cargas de trabajo
limit_dop
con el DOP máximo establecido en cuatro.application_name workload_group_name max_dop ---------------- ------------------- ------- limited_dop_application limit_dop 4
Repita los pasos anteriores, pero no escriba nada en el cuadro de la pestaña Parámetros de conexión adicionales. La salida cambia, en la que se muestra el nombre predeterminado de la aplicación de SSMS y el grupo de cargas de trabajo de
default
con el valor de0
predeterminado para el DOP máximo.application_name workload_group_name max_dop ---------------- ------------------- ------- Microsoft SQL Server Management Studio - Query default 0
Para revertir a la configuración inicial de este ejemplo, desconecte todas las sesiones mediante el grupo de cargas de trabajo
limit_dop
y ejecute el siguiente script de T-SQL. El script incluye los pasos siguientes:- Deshabilite el regulador de recursos para que se pueda quitar la función clasificadora.
- Anule el grupo de cargas de trabajo. Esto requiere que no haya sesiones que usen este grupo de cargas de trabajo.
- Vuelva a configurar el regulador de recursos para volver a cargar la configuración efectiva sin la función clasificadora y el grupo de cargas de trabajo. Esto habilita el regulador de recursos.
- Deshabilite el regulador de recursos para revertir a la configuración inicial.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; /* Drop the workload group. This requires that no sessions are using this workload group. */ DROP WORKLOAD GROUP limit_dop; /* Reconfigure resource governor to reload the effective configuration without the classifier function and the workload group. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Uso de varios grupos de recursos y grupos de cargas de trabajo
En este ejemplo se usa el regulador de recursos para clasificar las sesiones de una aplicación de procesamiento de pedidos en diferentes grupos de cargas de trabajo y grupos de recursos en función de la hora del día. Esta configuración asigna más recursos a la aplicación durante los tiempos de procesamiento máximos y limita sus recursos durante las horas fuera del horario. En el ejemplo se supone que la aplicación no usa sesiones de ejecución prolongada.
Cree dos grupos de recursos para el procesamiento de horas punta y horas fuera del horario.
- El grupo
peak_hours_pool
garantiza (reserva) un mínimo del 20 % del ancho de banda medio de CPU a través deMIN_CPU_PERCENT
y no limita el ancho de banda de CPU estableciendoMAX_CPU_PERCENT
en100
. - El grupo de
off_hours_pool
no reserva ningún ancho de banda de CPU estableciendoMIN_CPU_PERCENT
en0
, pero limita el ancho de banda de CPU a 50% cuando la contención de CPU está presente estableciendoMAX_CPU_PERCENT
en50
.
CREATE RESOURCE POOL peak_hours_pool WITH ( MIN_CPU_PERCENT = 20, MAX_CPU_PERCENT = 100 ); CREATE RESOURCE POOL off_hours_pool WITH ( MIN_CPU_PERCENT = 0, MAX_CPU_PERCENT = 50 );
Los grupos de recursos pueden reservar y limitar recursos del sistema, como CPU, memoria e E/S. Para obtener más información, consulte CREATE RESOURCE POOL.
- El grupo
Cree dos grupos de cargas de trabajo, uno para cada grupo de recursos, respectivamente.
- El
peak_hours_group
no limita el número de solicitudes simultáneas estableciendoGROUP_MAX_REQUESTS
en el valor predeterminado de0
. - El
off_hours_group
limita el número de solicitudes simultáneas en todas las sesiones clasificadas en este grupo estableciendoGROUP_MAX_REQUESTS
en200
.
CREATE WORKLOAD GROUP peak_hours_group WITH ( GROUP_MAX_REQUESTS = 0 ) USING peak_hours_pool; CREATE WORKLOAD GROUP off_hours_group WITH ( GROUP_MAX_REQUESTS = 200 ) USING off_hours_pool;
Los grupos de cargas de trabajo definen directivas como el número máximo de solicitudes, el grado máximo de paralelismo y el tamaño máximo de concesión de memoria. Para obtener más información, consulte CREATE WORKLOAD GROUP.
- El
Cree y rellene una tabla que defina los intervalos de horas pico y horas valle.
- Cada fila de la tabla define la hora de inicio y finalización del intervalo y el nombre del grupo de cargas de trabajo que se va a usar durante el intervalo.
- La hora de inicio y finalización de cada intervalo es inclusiva.
- La tabla se crea en la base de datos
master
para que se pueda usar en una función clasificadora enlazada al esquema.
USE master; GO CREATE TABLE dbo.workload_interval ( workload_group_name sysname NOT NULL, start_time time(7) NOT NULL, end_time time(7) NOT NULL, CONSTRAINT pk_workload_interval PRIMARY KEY (start_time, workload_group_name), CONSTRAINT ak_workload_interval_1 UNIQUE (end_time, workload_group_name), CONSTRAINT ck_workload_interval_1 CHECK (start_time < end_time) ); GO INSERT INTO dbo.workload_interval VALUES (N'off_hours_group', '00:00', '06:29:59.9999999'), (N'peak_hours_group', '06:30', '18:29:59.9999999'), (N'off_hours_group', '18:30', '23:59:59.9999999');
Cree la función clasificadora.
- Se espera que los datos de la tabla tengan una sola fila coincidente para cualquier hora determinada del día. Si los datos infringen esa regla, la función devuelve
default
como el nombre del grupo de cargas de trabajo. - La siguiente función de ejemplo también devuelve
default
si el nombre de la aplicación devuelto por la función integrada APP_NAME() es algo distinto deorder_processing
.
USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM dbo.workload_interval WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GO
- Se espera que los datos de la tabla tengan una sola fila coincidente para cualquier hora determinada del día. Si los datos infringen esa regla, la función devuelve
Este es un paso opcional. En lugar de crear una tabla en la base de datos
master
, puede usar un constructor con valores de tabla para definir los intervalos de tiempo directamente en la función clasificadora. Este es el enfoque recomendado cuando el tamaño de los datos es pequeño y los criterios de función clasificador no cambian con frecuencia. Este es un ejemplo del mismo clasificador que usa un constructor con valores de tabla en lugar de una tabla enmaster
.USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM ( VALUES (CAST(N'off_hours_group' AS sysname), CAST('00:00' AS time(7)), CAST('06:29:59.9999999' AS time(7))), (CAST(N'peak_hours_group' AS sysname), CAST('06:30' AS time(7)), CAST('18:29:59.9999999' AS time(7))), (CAST(N'off_hours_group' AS sysname), CAST('18:30' AS time(7)), CAST('23:59:59.9999999'AS time(7))) ) AS wg (workload_group_name, start_time, end_time) WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GO
Modifique la configuración del regulador de recursos para que la configuración sea eficaz y habilite el regulador de recursos.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
Compruebe que el regulador de recursos está habilitado, está usando la función clasificadora especificada y que la función clasificadora funciona según lo previsto mediante pasos similares como en el ejemplo anterior . Esta vez, se escribe
App=order_processing
en la pestaña Parámetros de conexión adicionales en el cuadro de diálogo de conexión de SSMS para que coincida con el nombre de la aplicación en la función clasificadora. Ejecute la consulta siguiente para determinar el nombre de la aplicación, el grupo de cargas de trabajo, el grupo de recursos y la reserva de CPU y el límite de la sesión actual:SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.group_max_requests, rp.name AS resource_pool_name, rp.min_cpu_percent, rp.max_cpu_percent FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id INNER JOIN sys.resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id WHERE s.session_id = @@SPID;
Los resultados dependen de la hora del día. Por ejemplo, si la hora actual es 14:30, el resultado muestra que se usan
peak_hours_group
ypeak_hours_pool
:application_name workload_group_name group_max_requests resource_pool_name min_cpu_percent max_cpu_percent ----------------- -------------------- ------------------ ------------------- --------------- --------------- order_processing peak_hours_group 0 peak_hours_pool 20 100
Para revertir a la configuración inicial de este ejemplo, desconecte todas las sesiones con los grupos de cargas de trabajo de
peak_hours_group
yoff_hours_group
y ejecute el siguiente script de T-SQL. El script incluye los pasos siguientes:- Deshabilite el regulador de recursos para que se pueda quitar la función clasificadora.
- Anule los grupos de cargas de trabajo. Esto requiere que ninguna sesión use estos grupos de cargas de trabajo.
- Una vez que se quitan los grupos de cargas de trabajo, quite los grupos de recursos.
- Reconfigura el administrador de recursos para volver a cargar la configuración efectiva sin la función clasificadora ni los grupos de trabajo y los grupos de recursos definidos por el usuario. Esto habilita el regulador de recursos.
- Deshabilite el regulador de recursos para revertir a la configuración inicial.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; DROP TABLE IF EXISTS dbo.workload_interval; /* Drop the workload groups. This requires that no sessions are using these workload groups. */ DROP WORKLOAD GROUP peak_hours_group; DROP WORKLOAD GROUP off_hours_group; /* Once the workload groups are dropped, drop the resource pools. */ DROP RESOURCE POOL peak_hours_pool; DROP RESOURCE POOL off_hours_pool; /* Reconfigure resource governor to reload the effective configuration without the classifier function and user-defined workload groups and resource pools. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Supervisión del regulador de recursos mediante vistas del sistema
Las consultas de ejemplo de esta sección muestran cómo puede supervisar las estadísticas y el comportamiento en tiempo de ejecución del regulador de recursos.
Las estadísticas del regulador de recursos son acumulativas desde el último reinicio del servidor. Si necesita recopilar estadísticas a partir de un momento determinado, puede restablecer las estadísticas mediante la instrucción ALTER RESOURCE GOVERNOR RESET STATISTICS
.
Estadísticas de tiempo de ejecución del grupo de recursos
Para cada grupo de recursos, el regulador de recursos realiza un seguimiento del uso de cpu y memoria, eventos fuera de memoria, concesiones de memoria, E/S y otras estadísticas. Para obtener más información, consulte sys.dm_resource_governor_resource_pools.
La consulta siguiente devuelve un subconjunto de estadísticas disponibles para todos los grupos de recursos:
SELECT rp.pool_id,
rp.name AS resource_pool_name,
wg.workload_group_count,
rp.statistics_start_time,
rp.total_cpu_usage_ms,
rp.target_memory_kb,
rp.used_memory_kb,
rp.out_of_memory_count,
rp.active_memgrant_count,
rp.total_memgrant_count,
rp.total_memgrant_timeout_count,
rp.read_io_completed_total,
rp.write_io_completed_total,
rp.read_bytes_total,
rp.write_bytes_total,
rp.read_io_stall_total_ms,
rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
SELECT COUNT(1) AS workload_group_count
FROM sys.dm_resource_governor_workload_groups AS wg
WHERE wg.pool_id = rp.pool_id
) AS wg;
Estadísticas de tiempo de ejecución del grupo de cargas de trabajo
Para cada grupo de cargas de trabajo, el regulador de recursos realiza un seguimiento del tiempo de CPU, el número de solicitudes, las tareas bloqueadas, el tiempo de espera de bloqueo, las optimizaciones de consultas y otras estadísticas. Para obtener más información, consulte sys.resource_governor_workload_groups.
La consulta siguiente devuelve un subconjunto de estadísticas disponibles para todos los grupos de cargas de trabajo:
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
wg.statistics_start_time,
wg.total_request_count,
wg.total_cpu_usage_ms,
wg.blocked_task_count,
wg.total_lock_wait_time_ms,
wg.total_query_optimization_count,
wg.max_request_grant_memory_kb,
wg.active_parallel_thread_count,
wg.effective_max_dop,
wg.request_max_memory_grant_percent_numeric
FROM sys.dm_resource_governor_workload_groups AS wg
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
Agregar sesiones por grupo de cargas de trabajo y atributos de sesión
La consulta siguiente devuelve una distribución de sesiones entre grupos de cargas de trabajo y estadísticas de sesión agregadas para cada grupo de cargas de trabajo.
Un gran número de sesiones con el estado preconnect
podría indicar lentitud en la ejecución del clasificador.
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
s.program_name AS application_name,
s.login_name,
s.host_name,
s.status,
d.name AS database_name,
MIN(s.login_time) AS first_login_time,
MAX(s.login_time) AS last_login_time,
MAX(s.last_request_start_time) AS last_request_start_time,
COUNT(1) AS session_count
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON s.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON s.database_id = d.database_id
GROUP BY wg.name,
rp.name,
s.program_name,
s.login_name,
s.host_name,
s.status,
d.name;
Solicitudes agregadas por grupo de cargas de trabajo y atributos de solicitud
La consulta siguiente devuelve una distribución de solicitudes entre grupos de cargas de trabajo y estadísticas de solicitudes agregadas para cada grupo de cargas de trabajo:
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
r.command,
r.status,
d.name AS database_name,
COUNT(1) AS request_count,
MIN(r.start_time) AS first_request_start_time,
MAX(r.start_time) AS last_request_start_time,
SUM(CAST(r.total_elapsed_time AS bigint)) AS total_elapsed_time_ms
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON r.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON r.database_id = d.database_id
GROUP BY wg.name,
rp.name,
r.command,
r.status,
d.name;
Procedimientos recomendados del regulador de recursos
- Configure la conexión de administrador dedicada (DAC) y aprenda a usarlo. Para obtener más información, consulte Conexión de diagnóstico para administradores de bases de datos. Si la configuración del regulador de recursos no funciona correctamente, puede usar DAC para solucionar problemas o deshabilitar el regulador de recursos.
- Al configurar grupos de recursos, tenga cuidado de especificar valores grandes para
MIN_CPU_PERCENT
,MIN_MEMORY_PERCENT
yMIN_IOPS_PER_VOLUME
. Una configuración deMIN
reserva recursos para un grupo de recursos y hace que no estén disponibles para otros grupos de recursos, incluido el grupo dedefault
. Para obtener más información, consulte Creación de un grupo de recursos. - La función clasificadora amplía el tiempo de procesamiento de inicio de sesión. Evite consultas complejas de ejecución prolongada o de uso intensivo de recursos en el clasificador, especialmente si las consultas usan tablas grandes. Una función demasiado compleja puede provocar retrasos de inicio de sesión o tiempos de espera de conexión.
- Si necesita usar una tabla en el clasificador y la tabla es pequeña y principalmente estática, considere la posibilidad de usar un constructor con valores de tabla en su lugar, como se muestra en un ejemplo de anterior en este artículo.
- Evite usar una tabla modificada con frecuencia en el clasificador. Esto aumenta el riesgo de bloqueo que puede retrasar los inicios de sesión y provocar tiempos de espera de conexión. Las siguientes soluciones alternativas pueden mitigar el riesgo, pero tienen desventajas, incluido el riesgo de clasificación incorrecta:
- Considere usar la indicación de tabla
NOLOCK
o la indicación equivalenteREADUNCOMMITTED
. Para obtener más información, vea READUNCOMMITTED. - Considere la posibilidad de usar la configuración de
LOCK_TIMEOUT
al principio de la función clasificadora y establecerla en un valor bajo, como 1000 milisegundos. Para más información, consulte SET LOCK_TIMEOUT.
- Considere usar la indicación de tabla
- No se puede modificar una función clasificadora mientras se hace referencia a ella en la configuración del regulador de recursos. Sin embargo, puede modificar la configuración para usar una función clasificadora diferente. Si desea realizar cambios en el clasificador, considere la posibilidad de crear un par de funciones clasificadoras. Por ejemplo, puede crear
dbo.rg_classifier_A()
ydbo.rg_classifier_B()
. Cuando se necesite un cambio en la lógica del clasificador, siga estos pasos:- Use la instrucción ALTER FUNCTION para realizar los cambios en la función que no se usan actualmente en la configuración del regulador de recursos.
- Use la instrucción ALTER RESOURCE GOVERNOR para activar el clasificador modificado y volver a configurar el regulador de recursos. Por ejemplo:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier_B); ALTER RESOURCE GOVERNOR RECONFIGURE;
- Si se vuelve a necesitar un cambio, siga los mismos pasos mediante la otra función (
dbo.rg_classifier_A()
).
- La configuración del regulador de recursos se almacena en la base de datos de
master
. Asegúrese de realizar copias de seguridad periódicas demaster
y saber cómo restaurarla. Para obtener más información, consulte Copia de seguridad y restauración: Bases de datos del sistema. Dado que hay limitaciones para restaurarmaster
, se recomienda guardar también una copia de los scripts de configuración del regulador de recursos por separado. Puede volver a crear la configuración del regulador de recursos a partir de scripts si es necesario volver a compilar la base de datos demaster
.
Contenido relacionado
- Regulador de recursos
- Habilitación del regulador de recursos
- Grupo de recursos del regulador de recursos
- Grupo de cargas de trabajo del regulador de recursos
- Configurar el regulador de recursos mediante una plantilla
- Ver y modificar las propiedades del regulador de recursos
- ALTER RESOURCE GOVERNOR
- CREATE RESOURCE POOL
- CREATE WORKLOAD GROUP
- CREATE FUNCTION