Base de datos tempdb

La base de datos del sistema tempdb es un recurso global disponible para todos los usuarios conectados a la instancia de SQL Server y se utiliza para incluir 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 SQL Server Database Engine (Motor de base de datos de SQL Server), por ejemplo, tablas de trabajo para almacenar resultados intermedios para colas u 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 control de versiones de filas 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 permite que se reviertan las transacciones. tempdb se vuelve a crear cada vez que se inicia SQL Server, de forma que el sistema siempre se inicia 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 tanto, en la base de datos tempdb no hay nada que deba guardarse de una a otra sesión de SQL Server. 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 cada edición 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

Registro

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 y, por tanto, no podría satisfacer las necesidades de carga de trabajo cada vez que se inicia SQL Server. Para evitar esta sobrecarga, aumente el tamaño de tempdb. Para obtener más información, vea Optimizar el rendimiento de tempdb y Planeamiento de capacidad para 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 mejora el algoritmo para asignar páginas mixtas en tempdb.

Mover los archivos de datos y registro de tempdb

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

Opciones de base de datos

En la siguiente tabla se muestra el valor predeterminado de las opciones de base de datos de la base de datos tempdb y se indica 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

OFF

ANSI_NULL_DEFAULT

OFF

ANSI_NULLS

OFF

ANSI_PADDING

OFF

ANSI_WARNINGS

OFF

ARITHABORT

OFF

AUTO_CLOSE

OFF

No

AUTO_CREATE_STATISTICS

ON

AUTO_SHRINK

OFF

No

AUTO_UPDATE_STATISTICS

ON

AUTO_UPDATE_STATISTICS_ASYNC

OFF

CHANGE_TRACKING

OFF

No

CONCAT_NULL_YIELDS_NULL

OFF

CURSOR_CLOSE_ON_COMMIT

OFF

CURSOR_DEFAULT

GLOBAL

Opciones de disponibilidad de la base de datos

ONLINE

MULTI_USER

READ_WRITE

No

No

No

DATE_CORRELATION_OPTIMIZATION

OFF

DB_CHAINING

ON

No

ENCRYPTION

OFF

No

NUMERIC_ROUNDABORT

OFF

PAGE_VERIFY

CHECKSUM para las nuevas instalaciones de SQL Server.

NONE para las actualizaciones de SQL Server.

PARAMETERIZATION

SIMPLE

QUOTED_IDENTIFIER

OFF

READ_COMMITTED_SNAPSHOT

OFF

No

RECOVERY

SIMPLE

No

RECURSIVE_TRIGGERS

OFF

Opciones de Service Broker

ENABLE_BROKER

TRUSTWORTHY

OFF

No

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

Restricciones

En la base de datos tempdb no se pueden realizar las siguientes operaciones:

  • 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 pertenece a dbo.

  • 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 puede 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 utilice tempdb, pero no es una práctica recomendada ya que algunas operaciones rutinarias requiere el uso de tempdb.