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: VERSIÓN preliminar de SQL Server 2025 (17.x) y versiones posteriores
Cuando se habilita la tempdb
gobernanza de recursos de espacio, se mejora la confiabilidad y se evitan interrupciones al impedir que las consultas o cargas de trabajo descontroladas consuman una gran cantidad de espacio en tempdb
.
A partir de la versión preliminar de SQL Server 2025 (17.x), puede usar el regulador de recursos para imponer un límite sobre el espacio total consumido por un grupo de trabajo. Un grupo de cargas de trabajo se puede asociar a una aplicación, un usuario, un grupo de usuarios, etc. Cuando una solicitud (una consulta) intenta superar el límite, el regulador de recursos lo anula con un error distinto que indica que se ha aplicado el límite del grupo de cargas de trabajo.
En efecto, puede crear particiones del espacio compartido tempdb
entre diferentes cargas de trabajo. Por ejemplo, puede establecer un límite mayor para un grupo de cargas de trabajo usado por una aplicación crítica y establecer un límite inferior para el default
grupo de cargas de trabajo usado por todas las demás cargas de trabajo.
Para ver ejemplos de configuración paso a paso, consulte Tutorial: Ejemplos para configurar la gobernanza de recursos del espacio tempdb.
Comienza a usar el regulador de recursos
El regulador de recursos proporciona un marco flexible para establecer diferentes tempdb
límites de espacio para diferentes aplicaciones, usuarios, grupos de usuarios, etc. También puede establecer límites en función de la lógica personalizada.
Si no está familiarizado con el regulador de recursos en SQL Server, consulte Regulador de recursos para obtener información sobre sus conceptos y funcionalidades.
Para ver un tutorial de configuración del regulador de recursos y procedimientos recomendados, consulte Tutorial: Ejemplos de configuración del regulador de recursos y procedimientos recomendados.
Establecimiento de límites en el consumo de espacio de tempdb
Puede limitar tempdb
el consumo de espacio por un grupo de cargas de trabajo de una de estas dos maneras:
Establezca un límite fijo mediante el
GROUP_MAX_TEMPDB_DATA_MB
argumento .El límite fijo es útil cuando se conocen los requisitos de uso de la carga de trabajo
tempdb
de antemano o cuandotempdb
el tamaño no cambia.Establezca un límite de porcentaje mediante el
GROUP_MAX_TEMPDB_DATA_PERCENT
argumento .El límite de porcentaje es útil cuando puede cambiar el tamaño máximo de
tempdb
con el tiempo y desea que eltempdb
espacio disponible para cada grupo de cargas de trabajo cambie proporcionalmente sin volver a configurar el regulador de recursos. Por ejemplo, si escala una máquina virtual de Azure que ejecuta SQL Server y aumenta el tamaño máximo detempdb
, también aumenta la cantidad de espacio disponible detempdb
para cada grupo de cargas de trabajo con un límite de porcentaje.
Para obtener más información sobre los GROUP_MAX_TEMPDB_DATA_MB
argumentos y GROUP_MAX_TEMPDB_DATA_PERCENT
, vea CREATE WORKLOAD GROUP o ALTER WORKLOAD GROUP.
Si se especifican límites fijos y por ciento para el mismo grupo de cargas de trabajo, el límite fijo tiene prioridad sobre el límite de porcentaje.
En una instancia de SQL Server determinada, puede tener una combinación de grupos de cargas de trabajo con límites fijos, límites de porcentaje o sin límites en el tempdb
consumo de espacio.
Configuración del límite de porcentaje
Los límites de porcentaje solo están en vigor cuando la configuración del tempdb
archivo de datos cumple los requisitos resumidos en la tabla siguiente:
Configuración | Descripción | Tamaño máximo de Tempdb (100%) | Límite de porcentaje en vigor |
---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB no se ha establecido- Para todos los archivos de datos, MAXSIZE no es UNLIMITED - Para todos los archivos de datos, FILEGROWTH no es cero |
tempdb los archivos de datos pueden crecer automáticamente hasta su tamaño máximo |
La suma de MAXSIZE valores para todos los archivos de datos |
Sí |
-
GROUP_MAX_TEMPDB_DATA_MB no se ha establecido- Para todos los archivos de datos, MAXSIZE es UNLIMITED - Para todos los archivos de datos FILEGROWTH , es cero. |
tempdb los archivos de datos son predefinidos a sus tamaños definidos y no pueden crecer más |
La suma de SIZE valores para todos los archivos de datos |
Sí |
Todas las demás configuraciones | No |
La consulta siguiente le permite ver la configuración actual tempdb
del archivo de datos:
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF(max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF(is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF(is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND
type_desc = 'ROWS';
Para un archivo determinado en el conjunto de resultados:
- Si la
maxsize_mb
columna esNULL
, entoncesMAXSIZE
esUNLIMITED
. - Cuando
filegrowth_mb
ofilegrowth_percent
es cero, entoncesFILEGROWTH
es cero.
Si establece GROUP_MAX_TEMPDB_DATA_PERCENT
y ejecuta la instrucción ALTER RESOURCE GOVERNOR RECONFIGURE , pero la configuración del archivo de datos no cumple los requisitos, la instrucción se completa correctamente y los límites de porcentaje se almacenan, pero no se aplican. En este caso, recibirá el mensaje de advertencia 10989, gravedad 10, GROUP_MAX_TEMPDB_DATA_PERCENT no está en vigor porque no se cumplen los requisitos de configuración de tempdb. El mensaje también se registra en el registro de errores.
Para que los límites de porcentaje sean efectivos, vuelva a configurar tempdb
los archivos de datos para que cumplan los requisitos y vuelva a ejecutarse ALTER RESOURCE GOVERNOR RECONFIGURE
. Para obtener más información sobre cómo configurar SIZE
, FILEGROWTH
y MAXSIZE
, vea Opciones de ALTER DATABASE de archivos y grupos de archivos.
Nota:
Para una nueva instancia de SQL Server, el archivo de datos MAXSIZE
es UNLIMITED
y FILEGROWTH
es mayor que cero, lo que significa que los límites de porcentaje no son efectivos. Para utilizar los límites de porcentaje, debe hacer una de las siguientes acciones:
- Aumentar previamente los archivos de datos de
tempdb
a sus tamaños previstos y establecerFILEGROWTH
en cero. - Establezca el
MAXSIZE
de cada archivo de datos a un valor limitado.Para cada
tempdb
volumen de archivos de datos, asegúrese de que la suma de valores deMAXSIZE
los archivos del volumen sea menor o igual que el espacio en disco disponible en el volumen.Por ejemplo, si un volumen tiene 100 GB de espacio libre y tiene dos
tempdb
archivos de datos, asegúrese de queMAXSIZE
cada archivo sea de 50 GB o menos.
Si hay un límite de porcentaje en vigor y agrega, quita o cambia el tamaño tempdb
de los archivos de datos, debe ejecutar ALTER RESOURCE GOVERNOR RECONFIGURE
para actualizar el regulador de recursos con el nuevo tamaño máximo de tempdb
(100%).
Cómo funciona
En esta sección se describe tempdb
la gobernanza de recursos de espacio en detalle.
A medida que se asignan y desasignan páginas de datos en
tempdb
, el regulador de recursos mantiene la contabilidad del espaciotempdb
consumido por cada grupo de cargas de trabajo.Si el regulador de recursos está habilitado y se establece un
tempdb
límite de consumo de espacio para un grupo de cargas de trabajo y una solicitud (una consulta) que se ejecuta en el grupo de cargas de trabajo intenta llevar el consumo totaltempdb
de espacio por encima del límite, la solicitud se anula con el error 1138, gravedad 17, no se pudo asignar una nueva página para la base de datos "tempdb" porque eso superaría el límite establecido para el grupo de cargas de trabajo "workload-group-name".Cuando se anula una solicitud con el error 1138, el valor en la columna
total_tempdb_data_limit_violation_count
de la vista de administración dinámica (DMV) sys.dm_resource_governor_workload_groups se incrementa en uno, y el evento extendidotempdb_data_workload_group_limit_reached
se desencadena.El regulador de recursos realiza un seguimiento de todo el
tempdb
uso que se puede atribuir a un grupo de cargas de trabajo, incluidas tablas temporales, variables (incluidas variables de tabla), parámetros con valores de tabla, tablas nontemporarias, cursores ytempdb
uso durante el procesamiento de consultas, como colas, desbordamientos, tablas de trabajo y archivos de trabajo.El consumo de espacio para las tablas temporales globales y las tablas no temporales en
tempdb
se tiene en cuenta bajo el grupo de carga de trabajo que inserta la primera fila en la tabla, incluso si sesiones de otros grupos de carga de trabajo agregan, modifican o quitan filas de la misma tabla.Los límites de consumo configurados de
tempdb
para cada grupo de cargas de trabajo se exponen en la vista de catálogo sys.resource_governor_workload_groups, en las columnasgroup_max_tempdb_data_mb
ygroup_max_tempdb_data_percent
.El consumo actual y el consumo máximo del espacio de
tempdb
por un grupo de cargas de trabajo se exponen en la DMV sys.dm_resource_governor_workload_groups, en las columnastempdb_data_space_kb
ypeak_tempdb_data_space_kb
, respectivamente.Sugerencia
Las columnas
tempdb_data_space_kb
ypeak_tempdb_data_space_kb
de sys.dm_resource_governor_workload_groups se mantienen incluso si no se establecen límites en el consumo de espacio detempdb
.Puede crear la función clasificadora y los grupos de cargas de trabajo sin establecer ningún límite inicialmente. Supervise
tempdb
el uso de cada grupo con el tiempo para establecer patrones de uso representativos y, a continuación, establezca los límites según sea necesario.Tempdb
el uso de los almacenes de versiones, incluido el almacén de versiones persistente (PVS) cuando la recuperación acelerada de bases de datos (ADR) está habilitada entempdb
, no se rige porque las solicitudes pueden usar versiones de fila en varios grupos de cargas de trabajo.El consumo de espacio en
tempdb
se contabiliza como el número de páginas de datos de 8 KB usadas. Incluso si una página no se rellena completamente con datos, agrega 8 KB altempdb
consumo de un grupo de cargas de trabajo.Tempdb
la contabilidad del espacio se mantiene durante toda la duración de un grupo de trabajo. Si se quita un grupo de cargas de trabajo mientras las tablas temporales globales o las tablas nontemporarias con los datos contabilizados en este grupo de cargas de trabajo permanecen entempdb
, el espacio usado por estas tablas no se contabiliza en ningún otro grupo de cargas de trabajo.La gobernanza de recursos de espacio de
Tempdb
controla el espacio en los archivos de datos detempdb
, pero no el espacio en disco en los volúmenes subyacentes. A menos que aumente previamente los archivos de datos detempdb
a sus tamaños previstos, es posible que otros archivos consuman el espacio en los volúmenes donde se encuentratempdb
. Si no hay espacio restante para que los archivos de datos detempdb
crezcan,tempdb
podría quedarse sin espacio antes de alcanzar cualquier límite en el consumo de espacio del grupo de trabajo entempdb
.La gobernanza de recursos de espacio en
tempdb
se aplica a los archivos de datos, pero no al archivo de registro de transacciones. Para asegurarse de que el registro de transacciones entempdb
no consuma una gran cantidad de espacio, habilite ADR entempdb
.
Diferencias en el seguimiento del espacio a nivel de sesión
El sys.dm_db_session_space_usage DMV proporciona tempdb
estadísticas de asignación de espacio y desasignación para cada sesión. Incluso si solo hay una sesión en un grupo de cargas de trabajo, las estadísticas de uso del espacio proporcionadas por esta DMV podrían no coincidir exactamente con las estadísticas proporcionadas en la vista de sys.dm_resource_governor_workload_groups , por los siguientes motivos:
- A diferencia de
sys.dm_resource_governor_workload_groups
,sys.dm_db_session_space_usage
:- No refleja el uso del espacio por parte de las tareas actualmente en ejecución. Las estadísticas de
sys.dm_db_session_space_usage
se actualizan cuando se completa una tarea. Las estadísticas desys.dm_resource_governor_workload_groups
se actualizan continuamente. - No realiza un seguimiento de las páginas del mapa de asignación de índices (IAM). Para obtener más información, vea Guía de arquitectura de páginas y extensiones.
- No refleja el uso del espacio por parte de las tareas actualmente en ejecución. Las estadísticas de
- Una vez eliminadas las filas o cuando se quita o trunca una tabla, índice o partición, las páginas de datos pueden desasignarse mediante un proceso en segundo plano asincrónico. Esta desasignación de página puede ocurrir con un retraso.
sys.dm_resource_governor_workload_groups
refleja estas desasignaciones de página a medida que se producen, incluso si la sesión que provocó estas desasignaciones se cerró y ya no está presente ensys.dm_db_session_space_usage
.
Procedimientos recomendados para la gobernanza de recursos de espacio tempdb
Antes de configurar la gobernanza de tempdb
recursos de espacio, tenga en cuenta los procedimientos recomendados siguientes:
Revise los procedimientos recomendados generales para el regulador de recursos.
En la mayoría de los escenarios, evite establecer el
tempdb
límite de consumo de espacio en un valor pequeño o cero, especialmente para el grupo dedefault
cargas de trabajo. Si lo hace, es posible que muchas tareas comunes empiecen a fallar si necesitan asignar espacio entempdb
. Por ejemplo, si establece el límite fijo o el límite de porcentaje en 0 para eldefault
grupo de cargas de trabajo, es posible que no pueda abrir el Explorador de objetos en SQL Server Management Studio (SSMS).A menos que haya creado grupos de cargas de trabajo personalizados y una función clasificadora que coloque las cargas de trabajo en sus grupos dedicados, evite limitar el uso de
tempdb
por parte del grupo de cargas de trabajodefault
. Esto puede anular las consultas con el error 1138 cuandotempdb
todavía tiene espacio sin usar que no puede consumir ninguna carga de trabajo de usuario.Se permite que la suma de los valores de todos los grupos de trabajo
GROUP_MAX_TEMPDB_DATA_MB
supere el tamaño máximotempdb
. Por ejemplo, si el tamaño máximotempdb
es de 100 GB, los límites para elGROUP_MAX_TEMPDB_DATA_MB
grupo de cargas de trabajo A y el grupo de cargas de trabajo B pueden ser de 80 GB cada uno.Este enfoque sigue evitando que cada grupo de cargas de trabajo consuma todo el espacio en
tempdb
dejando 20 GB para otros grupos de cargas de trabajo. Al mismo tiempo, se evitan anulaciones de consulta innecesarias porque todavía hay espaciotempdb
disponible y no es probable que los grupos de cargas de trabajo A y B consuman una gran cantidad detempdb
espacio al mismo tiempo.Del mismo modo, la suma de
GROUP_MAX_TEMPDB_DATA_PERCENT
valores para todos los grupos de trabajo puede superar el 100 %. Puede asignar más espacio detempdb
a cada grupo si sabe que es poco probable que varios grupos ocasionen un uso elevado detempdb
al mismo tiempo.
Contenido relacionado
- Tutorial: Ejemplos para configurar la 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
- CREAR GRUPO DE CARGA DE TRABAJO
- ALTERAR GRUPO DE CARGA DE TRABAJO
- ELIMINAR GRUPO DE CARGA DE TRABAJO
- sys.grupos_de_trabajo_del_gobernador_de_recursos
- sys.dm_resource_governor_workload_groups