1 comentario

Compresión o Reducción de la Tempdb (shrink tempdb)


Este artículo discutirá sobre tres métodos que puedes usar para reducir el tamaño de la base de datos tempdb, el primer método te da un completo control del tamaño de los archivos de la
tempdb pero requiere que se reinicie el servicio de SQL Server.

El segundo método minimiza la tempdb completa, con algunas limitaciones dentro de ellas reiniciar el servicio. El tercer método
permite minimizar el tamaño de archivos individuales. Los últimos dos métodos requieren que no exista actividad alguna en la base de datos tempdb durante el proceso de shrink.

Información de la tempdb

La tempdb es un espacio de trabajo temporal, estas son algunas de las funciones:

  1. ·        
    Almacenamiento de las tablas temporales creadas explícitamente.
  2. ·        
    Tablas de trabajo que contienen resultados intermedios creados durante el procesamiento de consultas y la clasificación.
  3. ·        
    Se encarga de materializar los cursoresestáticos.

SQL Server registra sólo la información necesaria en el
registro de transacciones de tempdb para deshacer una transacción, pero no para
rehacer las transacciones de base de datos durante la recuperación. Esta
función aumenta el rendimiento de las instrucciones INSERT en tempdb. Además,
no hay necesidad de registrar información para rehacer transacciones porque
tempdb se vuelve a crear cada vez que se reinicie SQL Server, por lo que no
tiene ningún transacciones para rehacer o deshacer. Cuando se inicia SQL
Server, tempdb se vuelve a crear mediante el uso de una copia de la base de
datos model y se restablece a su último tamaño configurado

 

 

Método 1 para comprimir Tempdb
Este método requiere que se reinicie SQL Server.

 1.      Parar SQL Server. Abrir el command prompt,y entonces iniciar SQL Server con el siguiente comando:

sqlservr -c –f

 

Los parámetros –c y –f le dicen que s SQL que inicie con el modo de configuración mínimo para la tempdb con un tamaño de 1 MB para archivos de dato y 0.5 MB para el log.

 

NOTA: Si utiliza una
instancia nombrada de SQL Server, debe cambiar a la carpeta correspondiente
(Archivos de programa \ Microsoft SQL Server \ MSSQL $ nombre de instancia \ Binn) y utilice la opción-s (-s%% instance_name).

 2.      Conecte a SQL Server con el Analizador de consultas y ejecute los siguientes comandos Transact-SQL:

 ALTER DATABASE tempdb MODIFY FILE

(NAME = ‘tempdev’, SIZE = target_size_in_MB)

–Desired target size for the data file

 

ALTER DATABASE tempdb MODIFY
FILE

(NAME = ‘templog’, SIZE =
target_size_in_MB)


–Desired
target size for the log file

 

3.      
Stop SQL Server pulsando Ctrl + C en la ventana de símbolo del sistema, reinicie SQL Server como un servicio,
a continuación, compruebe el tamaño de los archivos Tempdb.mdf y Templog.ldf.

Una limitación de este método es que sólo funciona en los archivos lógicos predeterminados tempdb, tempdev y templog. Si los archivos adicionales que se agregaron a tempdb, es posible reducir el tamaño después de reiniciar SQL Server como un servicio. Todos los archivos de tempdb se vuelvea crear durante el inicio, por lo tanto, están vacíos y se puede quitar. Para quitar los archivos adicionales de tempdb, utilice el comando ALTER DATABASE con la opción REMOVE FILE.

 

Método 2 para comprimir Tempdb

 

Utilice el comando DBCC SHRINKDATABASE para reducir la base de datos tempdb en su totalidad. DBCC SHRINKDATABASE recibe el parámetro, que es el porcentaje deseado de espacio libre que queda en el archivo de base de datos después de que la base de datos
es reducido. Si utiliza DBCC SHRINKDATABASE, puede que tenga que reiniciar SQL Server.

IMPORTANTE: Si se ejecuta DBCC SHRINKDATABASE, ninguna otra actividad puede estar ocurriendo con la base de datos tempdb. Para asegurarse de que otros procesos no puedan utilizar tempdb mientras se ejecuta DBCC SHRINKDATABASE, debe iniciar SQL Server en modo de usuario único.

1. Determine el espacio que tempdb utiliza actualmente mediante el procedimiento almacenado sp_spaceused. Luego, se calcula el
porcentaje de espacio libre que queda para su uso como un parámetro para DBCC
SHRINKDATABASE; este cálculo se basa en el tamaño de la base deseada.

Nota En algunos casos puede que tenga que ejecutar sp_spaceused @ updateusage = true para volver a calcular el espacio
utilizado y obtener un informe actualizado.

Considere este ejemplo:
Supongamos que

tempdb
  tiene dos archivos: el archivo de datos principal (Tempdb.mdf), que es de 100 MB de tamaño y el archivo de registro (Tempdb.ldf),
que es de 30 MB.

Supongamos que
sp_spaceused
  informa que el archivo de datos principal contiene 60 MB de datos. Suponga también que desea reducir el tamaño del archivo de datos principal de 80 MB. Calcular el porcentaje deseado de espacio libre que queda después de la compresión: 80 MB – 60 MB = 20 MB. Ahora, divida 20 MB por 80 MB = 25% y que es el porcentaje Destino. El archivo de registro de transacciones se redujo en
consecuencia, dejando el 25% o 20 MB de espacio libre después que la base de datos es reducida.

 

2.      
2. Conecte a SQL Server con el Analizador de consultas y ejecute los siguientes comandos Transact-SQL:

 

dbcc shrinkdatabase(tempdb, ‘target percent’)

— This command shrinks
the tempdb database as a whole

 

 

Existen limitaciones para el uso del comando DBCC SHRINKDATABASE en la base de datos tempdb. El tamaño de destino para los datos y archivos de registro no puede ser más pequeño que el tamaño especificado cuando se creó la base de datos o el último tamaño establecido explícitamente con una operación de cambio de tamaño de archivo como ALTER DATABASE con la opción MODIFY FILE o el comando DBCC SHRINKFILE. Otra limitación de DBCC SHRINKDATABASE es el cálculo del parámetro target_percentage y su dependencia del espacio utilizado actualmente

 

Método 3 para comprimir Tempdb

 

Utilice el comando DBCC SHRINKFILE para reducir el tamaño de los archivos de tempdb individuales. DBCC SHRINKFILE proporciona más flexibilidad que DBCC SHRINKDATABASE porque se puede usar en un archivo de base de datos única sin
afectar a otros archivos que pertenecen a la misma base de datos. DBCC SHRINKFILE recibe el parámetro de tamaño de destino, que es el tamaño final deseado para el archivo de base de datos.

IMPORTANTE: Usted debe ejecutar el comando DBCC SHRINKFILE, mientras que ninguna otra actividad se este produciendo en la base de datos tempdb. Para asegurarse de que otros procesos no puedan utilizar tempdb mientras se ejecuta DBCC SHRINKFILE, debe reiniciar SQL Server en el modo de usuario único.

 

1.      
Determine el tamaño deseado para el archivo de datos principal (tempdb.mdf), el archivo de registro (templog.ldf), y / o archivos adicionales agregados a tempdb. Asegurarse de que el espacio utilizado en los archivos es menor o igual al tamaño deseado.

 

2.      
Conecte a SQL Server con el Analizador de consultas y ejecute los siguientes comandos Transact-SQL para los archivos de base de datos específicos que se necesitan para reducir el tamaño:

 use tempdb

go

 

dbcc shrinkfile(tempdev, ‘target size in MB’)

go

— this command shrinks the primary data file

 

dbcc shrinkfile(templog, ‘target size in MB’)

go

— this command shrinks the log file, look at the last
paragraph.

 

Una ventaja de DBCC SHRINKFILE es que puede reducir el tamaño de un archivo a un tamaño más pequeño que su tamaño original. Puede emitir DBCC SHRINKFILE en cualquiera de los archivos de datos o archivos de registro. Una limitación de DBCC SHRINKFILE es que no se puede hacer que la base de datos sea más pequeña que el tamaño de la base de datos model.

En SQL Server 7.0 un registro de transacciones de contracción es una operación diferida y debe emitir un truncamiento de registro y copia de seguridad paraayudar a la operación de reducción en una base de datos. Sin embargo, por defecto, tempdb tiene la opción trunc log on chkpt establecido en ON, porlo tanto, hay que no es necesario emitir un truncamiento del registro de la base de datos.

 

 Efectos de la ejecución de DBCC SHRINKDATABASE o DBCCSHRINKFILE mientras Tempdb está en uso


Si tempdb está en uso y se intenta reducir su tamaño mediante el uso de la instrucción DBCC SHRINKDATABASE o comandos DBCC SHRINKFILE, puede recibir múltiples errores de consistencia similar a la siguiente tipo y la operación de reducción puede fallar:

Servidor: Mensaje 2501, Nivel 16, Estado 1, Línea 1 No se pudo encontrar la
tabla ‘1525580473 ‘. Compruebe sysobjects.
-o-
Servidor: Mensaje 8909, Nivel 16, Estado 1, Línea 0 Tabla dañada: Id. de objeto 1, Id. de índice 0, Id. de la página% S_PGID.

El PageId
en el encabezado de página =% S_PGID.

Aunque el error 2501 no puede ser un indicio de daños en tempdb, hace que la operación de reducción fracase. Por otro lado, el error 8909 podría indicar la corrupción en la base de datos tempdb. Reinicie SQL Server para volver a crear tempdb y limpiar los errores de coherencia. Sin embargo, tenga en cuenta que podría haber otras razones para los errores de corrupción de datos físicos, como el error 8909 y los que se incluyen entrada / salida de los problemas del subsistema.

 

 

 

REFERENCIAS


SQL Server Books Online; topics: “DBCCSHRINKFILE”; “DBCC SHRINKDATABASE”

 

http://support.microsoft.com/?scid=kb;en-us;307487&x=9&y=13

 

Espero les sirva,   Saludos

https://dbasqlserver.wordpress.com/

 

Anuncios

Un comentario el “Compresión o Reducción de la Tempdb (shrink tempdb)

  1. Si vas a ‘copiar’ de la pagina de Microsoft, por lo menos agrega ejemplos reales.

Si te sirvio o te gusto el post, deja un comentario, o vota por el blog, esto nos ayuda a seguir creciendo, Gracias

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: