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 |
Sí |
ANSI_NULL_DEFAULT |
OFF |
Sí |
ANSI_NULLS |
OFF |
Sí |
ANSI_PADDING |
OFF |
Sí |
ANSI_WARNINGS |
OFF |
Sí |
ARITHABORT |
OFF |
Sí |
AUTO_CLOSE |
OFF |
No |
AUTO_CREATE_STATISTICS |
ON |
Sí |
AUTO_SHRINK |
OFF |
No |
AUTO_UPDATE_STATISTICS |
ON |
Sí |
AUTO_UPDATE_STATISTICS_ASYNC |
OFF |
Sí |
CHANGE_TRACKING |
OFF |
No |
CONCAT_NULL_YIELDS_NULL |
OFF |
Sí |
CURSOR_CLOSE_ON_COMMIT |
OFF |
Sí |
CURSOR_DEFAULT |
GLOBAL |
Sí |
Opciones de disponibilidad de la base de datos |
ONLINE MULTI_USER READ_WRITE |
No No No |
DATE_CORRELATION_OPTIMIZATION |
OFF |
Sí |
DB_CHAINING |
ON |
No |
ENCRYPTION |
OFF |
No |
NUMERIC_ROUNDABORT |
OFF |
Sí |
PAGE_VERIFY |
CHECKSUM para las nuevas instalaciones de SQL Server. NONE para las actualizaciones de SQL Server. |
Sí |
PARAMETERIZATION |
SIMPLE |
Sí |
QUOTED_IDENTIFIER |
OFF |
Sí |
READ_COMMITTED_SNAPSHOT |
OFF |
No |
RECOVERY |
SIMPLE |
No |
RECURSIVE_TRIGGERS |
OFF |
Sí |
Opciones de Service Broker |
ENABLE_BROKER |
Sí |
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.
Vea también