Base de datos tempdb

La base de datos del sistema tempdb es un recurso global que está disponible para todos los usuarios conectados a la instancia de SQL Server y se usa para contener lo siguiente:

  • Objetos de usuario temporales creados explícitamente como: tablas temporales locales o globales, procedimientos almacenados temporales, variables de tabla o cursores.

  • Objetos internos creados por el motor de base de datos de SQL Server, por ejemplo, tablas de trabajo para almacenar resultados intermedios para colas o ordenación.

  • Versiones de fila generadas por las transacciones de modificación de datos en una base de datos que utiliza transacciones de lectura confirmada que usan transacciones de aislamiento de versiones de fila o de aislamiento de instantáneas.

  • Versiones de fila que se generan mediante transacciones de modificación de datos para características como operaciones de índice en línea, conjuntos de resultados activos múltiples (MARS) y desencadenadores AFTER.

Las operaciones realizadas en tempdb se registran con un nivel mínimo. Esto habilita la reversión de las transacciones. tempdb se vuelve a crear cada vez que se inicia SQL Server para que el sistema siempre comience con una copia limpia de la base de datos. Las tablas y los procedimientos almacenados temporales se quitan automáticamente en la desconexión y ninguna conexión permanece activa cuando se cierra el sistema. Por lo tanto, nunca hay nada en tempdb que se va a guardar de una sesión de SQL Server a otra. No se permite realizar operaciones de copia de seguridad y restauración en tempdb.

Propiedades físicas de tempdb

En la tabla siguiente se muestran los valores iniciales de configuración de los archivos de datos y registro de tempdb . El tamaño de estos archivos puede variar ligeramente para diferentes ediciones de SQL Server.

Archivo Nombre lógico Nombre físico Crecimiento del archivo
Datos principales tempdev tempdb.mdf Crecimiento automático del 10 por ciento hasta llenar el disco
Log templog templog.ldf Crecimiento automático del 10 por ciento hasta un máximo de 2 terabytes

El tamaño de tempdb puede afectar al rendimiento de un sistema. Por ejemplo, si el tamaño de tempdb es demasiado pequeño, el procesamiento del sistema podría estar demasiado ocupado con el crecimiento automático de la base de datos para admitir el requisito de carga de trabajo cada vez que se inicia SQL Server. Puede evitar esta sobrecarga aumentando el tamaño de tempdb.

Mejoras en el rendimiento de tempdb

En SQL Server, el rendimiento de tempdb se mejora de las siguientes maneras:

  • Las tablas temporales y las variables de tabla se pueden almacenar en caché. El almacenamiento en caché permite que las operaciones que quitan y crean los objetos temporales se ejecuten muy rápidamente y reduce la contención de la asignación de páginas

  • Se mejora el protocolo de bloqueo temporal de página de asignación. Esto reduce el número de bloqueos temporales UP (de actualización) utilizados.

  • Se reduce la sobrecarga de registro para tempdb . Esto reduce el consumo de ancho de banda de E/S del disco en el archivo de registro de tempdb .

  • Se ha mejorado el algoritmo para asignar páginas mixtas en tempdb .

Mover los archivos de datos y registro de tempdb

Para mover los archivos de registro y datos de tempdb , consulte Mover bases de datos del sistema.

Opciones de base de datos

En la tabla siguiente se muestra el valor predeterminado para cada opción de base de datos de la base de datos tempdb y si la opción se puede modificar. Para ver la configuración actual de estas opciones, utilice la vista de catálogo sys.databases .

Opción de base de datos Valor predeterminado Se puede modificar
ALLOW_SNAPSHOT_ISOLATION Apagado
ANSI_NULL_DEFAULT Apagado
ANSI_NULLS Apagado
ANSI_PADDING Apagado
ANSI_WARNINGS Apagado
ARITHABORT Apagado
AUTO_CLOSE Apagado No
AUTO_CREATE_STATISTICS ACTIVAR
AUTO_SHRINK Apagado No
AUTO_UPDATE_STATISTICS ACTIVAR
AUTO_UPDATE_STATISTICS_ASYNC Apagado
CHANGE_TRACKING Apagado No
CONCAT_NULL_YIELDS_NULL Apagado
CURSOR_CLOSE_ON_COMMIT Apagado
CURSOR_DEFAULT GLOBAL
Opciones de disponibilidad de la base de datos ONLINE

MULTI_USER

READ_WRITE
No

No

No
DATE_CORRELATION_OPTIMIZATION Apagado
DB_CHAINING ACTIVAR No
ENCRYPTION Apagado No
NUMERIC_ROUNDABORT Apagado
PAGE_VERIFY CHECKSUM para las nuevas instalaciones de SQL Server.

NONE para las actualizaciones de SQL Server.
PARAMETERIZATION SIMPLE
QUOTED_IDENTIFIER Apagado
READ_COMMITTED_SNAPSHOT Apagado No
RECOVERY SIMPLE No
RECURSIVE_TRIGGERS Apagado
Opciones de Service Broker ENABLE_BROKER
TRUSTWORTHY Apagado No

Para obtener una descripción de estas opciones de la base de datos, vea Opciones de ALTER DATABASE SET (Transact-SQL).

Restricciones

Las siguientes operaciones no se pueden realizar en la base de datos tempdb :

  • Agregar grupos de archivos.

  • Realizar una copia de seguridad o restaurar la base de datos.

  • Cambiar intercalaciones. La intercalación predeterminada es la intercalación de servidor.

  • Cambiar el propietario de la base de datos. tempdb es propiedad de sa.

  • Crear una instantánea de base de datos.

  • Eliminar la base de datos.

  • Eliminar el usuario guest de la base de datos.

  • Habilitar el mecanismo de captura de cambios en los datos.

  • Participar en el reflejo de la base de datos.

  • Quitar el grupo de archivos principal, el archivo de datos principal o el archivo de registro.

  • Cambiar el nombre de la base de datos o del grupo de archivos principal.

  • Ejecutar DBCC CHECKALLOC.

  • Ejecutar DBCC CHECKCATALOG.

  • Establecer la base de datos en OFFLINE.

  • Establecer la base de datos o el grupo de archivos principal en READ_ONLY.

Permisos

Cualquier usuario puede crear objetos temporales en tempdb. Los usuarios solo pueden acceder a sus propios objetos, a menos que reciban permisos adicionales. Es posible revocar el permiso de conexión a tempdb para impedir que un usuario use tempdb, pero no es una práctica recomendada ya que algunas operaciones rutinarias necesitan el uso de tempdb.

Opción SORT_IN_TEMPDB para índices

Bases de datos del sistema

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

Mover archivos de base de datos

Consulte también

Trabajar con tempdb en SQL Server 2005