Luego de consultar con expertos en la materia, programadores de varias áreas y maestros dimos con la solución al problema y la plasmamos en esta publicación.
Solución:
Para mover tempdb
archivos, simplemente necesita hacer lo siguiente:
alter database tempdb
modify file
(
name = tempdev,
filename = 'C:YourNewTempdbDirtempdb.mdf'
)
go
alter database tempdb
modify file
(
name = templog,
filename = 'C:YourNewTempdbDirtemplog.ldf'
)
go
Si desea agregar un nuevo archivo a tempdb
simplemente debe hacer lo siguiente (siempre que desee agregarlo a la PRIMARY
grupo de archivos, o cree uno propio):
alter database tempdb
add file
(
name = tempdb2,
filename = 'C:YourNewTempdbDirTempdb2.ndf'
)
go
Para que estos cambios surtan efecto, deberá reiniciar el servicio de SQL Server. Asi que en lo que respecta a minimizar el tiempo de inactividad, está limitado por la cantidad de tiempo que llevará el reinicio del servicio. No tienes que preocuparte por mover los preexistentes tempdb
archivos de base de datos, ya que SQL Server siempre recrea los archivos y las nuevas ubicaciones/archivos se crearán al iniciar el servicio.
En cuanto al “archivo de datos 1 tempdb por núcleo”, eso es en gran medida un mito. El enfoque correcto es monitorear tempdb
contención de archivos para las páginas de espacio libre de página (PFS), mapa de asignación global (GAM) y mapa de asignación global compartido (SGAM). Consulte este artículo para obtener una consulta (enlace alternativo) que busca a través de la sys.dm_os_waiting_tasks
DMV para ver cuánto tempdb
archivo de contención que hay. Entonces tienes que salir de esto, en lugar de simplemente cubrirte. tempdb
con la misma cantidad de archivos que núcleos. Es el enfoque más recomendable.
-
Para mover tempdb, ejecute:
ALTER DATABASE tempdb MODIFY FILE ( name=tempdev, filename='D:Newpathtempdb.mdf') GO ALTER DATABASE tempdb MODIFY FILE ( name=templog, filename='D:Newpathtemplog.ldf') GO
Luego reinicie su servicio de SQL Server (MSSQLServer).
-
Número de archivos en tempdb: consulte el artículo de Paul Randall: Un mito de DBA de SQL Server por día: (12/30) tempdb siempre debe tener un archivo de datos por núcleo de procesador
Del consejo de Microsoft:
Como regla general, si el número de procesadores lógicos es menor o igual a 8, utilice el mismo número de archivos de datos que procesadores lógicos.
Si la cantidad de procesadores lógicos es superior a 8, use 8 archivos de datos y luego, si la contienda continúa, aumente la cantidad de archivos de datos en múltiplos de 4 (hasta la cantidad de procesadores lógicos) hasta que la contienda se reduzca a niveles aceptables o haga cambios en la carga de trabajo/código.
Mover los archivos TempDB es un proceso de 2 pasos:
- Dile a SQL donde donde desea que vayan sus nuevos archivos TempDB (esto no tiene tiempo de inactividad)
- Reiniciar la
SQL Server
servicio para que el cambio surta efecto (este es el tiempo de inactividad mínimo necesitas)
Para decirle a SQL dónde crear los nuevos archivos TempDB, puede usar:
DECLARE @newDriveAndFolder VARCHAR(8000);
SET @newDriveAndFolder = 'Z:YourTempDBfolder';
SELECT [name] AS [Logical Name]
,physical_name AS [Current Location]
,state_desc AS [Status]
,size / 128 AS [Size(MB)] --Number of 8KB pages / 128 = MB
,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
+ CHAR(9) /* Tab */
+ ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
+ CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END + ''''
+ ');'
AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];
Esto generará las declaraciones T-SQL que necesita ejecutar para mover los archivos al nuevo drive:folder
usted quiere. (click en la imagen para agrandar)
Cuando haya ejecutado sus declaraciones de movimiento, puede ejecutar la consulta anterior nuevamente, para verificar que el Current Location
columna ahora muestra su nuevo drive:folder
.
Una vez que esté satisfecho con los cambios, reiniciar el servicio de SQL Server.
Calificaciones y comentarios
Finalizando este artículo puedes encontrar las críticas de otros gestores de proyectos, tú además tienes la habilidad mostrar el tuyo si lo deseas.