Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2025 (17.x) y versiones posteriores
En los ejemplos de este artículo se muestra cómo establecer límites en el consumo de espacio de tempdb y ver el consumo de espacio de tempdb por cada grupo de carga de trabajo.
Para obtener una introducción a la tempdb gobernanza de recursos espaciales, consulte Gobernanza de recursos espaciales de Tempdb.
Estos ejemplos están diseñados para ayudarle a familiarizarse con tempdb la gobernanza de recursos espaciales en un entorno de prueba y no producción.
En los ejemplos se supone que el regulador de recursos no está habilitado inicialmente y que su configuración no cambia de la predeterminada. Se asume también que ninguna otra carga de trabajo de la instancia de SQL Server contribuye materialmente al tempdb consumo de espacio mientras se ejecutan los scripts.
Establezca un límite fijo para el grupo de trabajo default
En este ejemplo se limita el consumo total tempdb de espacio por parte de las solicitudes (consultas) del default grupo de cargas de trabajo a un límite fijo.
Modifique el
defaultgrupo de cargas de trabajo para configurar un límite fijo de 20 GB en eltempdbconsumo de espacio.ALTER WORKLOAD GROUP [default] WITH (GROUP_MAX_TEMPDB_DATA_MB = 20480);Active el regulador de recursos para aplicar la configuración actual.
ALTER RESOURCE GOVERNOR RECONFIGURE;Vea los límites del
tempdbconsumo de espacio.SELECT group_id, name, group_max_tempdb_data_mb, group_max_tempdb_data_percent FROM sys.resource_governor_workload_groups WHERE name = 'default';Compruebe el consumo de espacio actual
tempdbdel grupo de cargas de trabajodefault, agregue datos entempdbcreando una tabla temporal e insertando una fila y, a continuación, compruebe nuevamente el consumo de espacio para ver el aumento.SELECT group_id, name, tempdb_data_space_kb FROM sys.dm_resource_governor_workload_groups WHERE name = 'default'; SELECT REPLICATE('A', 1000) AS c INTO #t; SELECT group_id, name, tempdb_data_space_kb FROM sys.dm_resource_governor_workload_groups WHERE name = 'default';Opcionalmente, elimine los límites para el grupo
defaulty deshabilite el regulador de recursos para volver al consumo de espacio no gobernado entempdb.ALTER WORKLOAD GROUP [default] WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL, GROUP_MAX_TEMPDB_DATA_PERCENT = NULL); ALTER RESOURCE GOVERNOR DISABLE;
Establecer un límite de porcentaje para el grupo de cargas de trabajo default
En este ejemplo se configuran tempdb los archivos de datos para que se pueda usar el límite de porcentaje y, a continuación, se limita el consumo total tempdb de espacio por parte de las solicitudes (consultas) del default grupo de cargas de trabajo a un límite de porcentaje.
Establezca
FILEGROWTHyMAXSIZEpara que todos lostempdbarchivos de datos cumplan los requisitos, limitando el tamaño máximo detempdba 1 GB.En este ejemplo se supone que
tempdbtiene cuatro archivos de datos. Es posible que tenga que ajustar el script si latempdbconfiguración usa un número diferente de archivos o si los nombres lógicos de archivo son diferentes. Es posible que también tenga que reiniciar la instancia de SQL Server o reducir el uso detempdbsi llega a recibir el error 5040, MODIFY FILE falló para la base de datos 'tempdb' ... El tamaño del archivo ... es mayor que MAXSIZE ... al ejecutar este script.ALTER DATABASE tempdb MODIFY FILE (NAME = N'tempdev', FILEGROWTH = 64 MB, MAXSIZE = 256 MB); ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp2', FILEGROWTH = 64 MB, MAXSIZE = 256 MB); ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp3', FILEGROWTH = 64 MB, MAXSIZE = 256 MB); ALTER DATABASE tempdb MODIFY FILE (NAME = N'temp4', FILEGROWTH = 64 MB, MAXSIZE = 256 MB);Modifique el
defaultgrupo de cargas de trabajo para configurar un límite del cinco por ciento en el consumo de espacio detempdb. Con el tamaño máximotempdbde 1 GB, esto limita eldefaultgrupo a aproximadamente 51 MB detempdbespacio.ALTER WORKLOAD GROUP [default] WITH (GROUP_MAX_TEMPDB_DATA_PERCENT = 5);Si se establece un límite fijo, quítelo para que no invalide el límite de porcentaje.
ALTER WORKLOAD GROUP [default] WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL);Active el regulador de recursos para que la configuración surta efecto.
ALTER RESOURCE GOVERNOR RECONFIGURE;Vea los límites del
tempdbconsumo de espacio.SELECT group_id, name, group_max_tempdb_data_mb, group_max_tempdb_data_percent FROM sys.resource_governor_workload_groups WHERE name = 'default';Agregue datos en
tempdbpara alcanzar el límite.SELECT * INTO #m FROM sys.messages;La instrucción se anula con el error 1138.
Compruebe las estadísticas del grupo de cargas de trabajo para
tempdb.SELECT group_id, name, tempdb_data_space_kb, peak_tempdb_data_space_kb, total_tempdb_data_limit_violation_count FROM sys.dm_resource_governor_workload_groups WHERE name = 'default';El valor en la columna
total_tempdb_data_limit_violation_countse incrementa en 1, lo que muestra que se anuló una solicitud en el grupo de carga de trabajodefaultporque el consumo de espaciotempdbestaba limitado por el regulador de recursos.Opcionalmente, elimine los límites para el grupo
defaulty deshabilite el regulador de recursos para volver al consumo de espacio no gobernado entempdb.ALTER WORKLOAD GROUP [default] WITH (GROUP_MAX_TEMPDB_DATA_MB = NULL, GROUP_MAX_TEMPDB_DATA_PERCENT = NULL); ALTER RESOURCE GOVERNOR DISABLE;Opcionalmente, revierta los
tempdbcambios de configuración del archivo de datos realizados anteriormente en este ejemplo.
Establecimiento de un límite fijo para un grupo de cargas de trabajo definido por el usuario
En este ejemplo se crea un nuevo grupo de cargas de trabajo y, a continuación, se crea una función clasificadora para asignar sesiones con un nombre de aplicación específico a este grupo de cargas de trabajo.
Para los fines de este ejemplo, el límite fijo en el tempdb consumo de espacio para el grupo de cargas de trabajo se establece en un valor pequeño de 1 MB. A continuación, en el ejemplo se muestra que se anula un intento de asignar espacio en tempdb que supera el límite.
Cree un grupo de cargas de trabajo y limite su
tempdbconsumo de espacio a 1 MB.CREATE WORKLOAD GROUP limited_tempdb_space_group WITH (GROUP_MAX_TEMPDB_DATA_MB = 1);Cree la función clasificadora en la
masterbase de datos. El clasificador 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 enlimited_tempdb_application, la función devuelvelimited_tempdb_space_groupcomo nombre del grupo de cargas de trabajo que se utilizará. De lo contrario, la función devuelvedefaultcomo 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_tempdb_application' SELECT @WorkloadGroupName = N'limited_tempdb_space_group'; RETURN @WorkloadGroupName; END; GOModifique el regulador de recursos para usar la función clasificadora y vuelva a configurar el regulador de recursos para usar la nueva configuración.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;Abra una nueva sesión que se clasifique en el grupo de trabajo de cargas de
limited_tempdb_space_group.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 en los pasos anteriores.
Seleccione la pestaña Parámetros de conexión adicionales y escriba
App=limited_tempdb_application. Esto hace que SSMS uselimited_tempdb_applicationcomo nombre de aplicación al conectarse a la instancia. LaAPP_NAME()función del clasificador también devuelve este valor.Seleccione Conectar para abrir una nueva sesión.
Ejecute la siguiente instrucción en la ventana de consulta abierta en el paso anterior. La salida debe mostrar que tu sesión está clasificada en el grupo de cargas de trabajo
limited_tempdb_space_group.SELECT wg.name AS workload_group_name FROM sys.dm_exec_sessions AS s INNER JOIN sys.dm_resource_governor_workload_groups AS wg ON s.group_id = wg.group_id WHERE s.session_id = @@SPID;Ejecute la siguiente instrucción en la misma ventana de consulta.
SELECT REPLICATE('S', 100) AS c INTO #t1;La declaración se completa correctamente. Ejecute la siguiente instrucción en la misma ventana de consulta:
SELECT REPLICATE(CAST ('F' AS NVARCHAR (MAX)), 1000000) AS c INTO #t2;La instrucción se anula con el error 1138 porque intenta superar el límite de consumo de espacio de
tempdbde 1 MB para el grupo de cargas de trabajo.Consulte el consumo de espacio actual y máximo
tempdbpor el grupo de trabajolimited_tempdb_space_group.SELECT group_id, name, tempdb_data_space_kb, peak_tempdb_data_space_kb, total_tempdb_data_limit_violation_count FROM sys.dm_resource_governor_workload_groups WHERE name = 'limited_tempdb_space_group';El valor de la
total_tempdb_data_limit_violation_countcolumna es 1, que muestra que se anuló una solicitud de este grupo de cargas de trabajo porque sutempdbconsumo de espacio estaba limitado por el regulador de recursos.Opcionalmente, para revertir a la configuración inicial de este ejemplo, desconecte todas las sesiones mediante el
limited_tempdb_space_groupgrupo de cargas de trabajo y ejecute el siguiente script de T-SQL:/* 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 limited_tempdb_space_group; /* 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;Dado que SSMS conserva los parámetros de conexión en la pestaña Parámetros de conexión adicionales , asegúrese de quitar el
Appparámetro la próxima vez que se conecte a la misma instancia del motor de base de datos. Esto evita que las conexiones se clasifiquen en ellimited_tempdb_space_groupgrupo de cargas de trabajo si existe.
Contenido relacionado
- Gobernanza de recursos de espacio tempdb
- Gobernador de Recursos
- Tutorial de : ejemplos de configuración del regulador de recursos y procedimientos recomendados
- ALTER RESOURCE GOVERNOR (Transact-SQL)
- CREAR GRUPO DE CARGA DE TRABAJO (Transact-SQL)
- ALTER WORKLOAD GROUP (Transact-SQL)
- DROP WORKLOAD GROUP (Transact-SQL)
- sys.grupos_de_trabajo_del_gobernador_de_recursos
- sys.dm_resource_governor_workload_groups