J'aimerais savoir deux choses:
S'agit-il d'un fichier par cœur? Donc, quad-core = 4 fichiers tempdb, en créant trois nouveaux?
Pour déplacer des fichiers tempdb
, il vous suffit de procéder comme suit:
alter database tempdb
modify file
(
name = tempdev,
filename = 'C:\YourNewTempdbDir\tempdb.mdf'
)
go
alter database tempdb
modify file
(
name = templog,
filename = 'C:\YourNewTempdbDir\templog.ldf'
)
go
Si vous souhaitez ajouter un nouveau fichier à tempdb
, il vous suffit de procéder comme suit (à condition de l'ajouter au groupe de fichiers PRIMARY
ou de créer le vôtre):
alter database tempdb
add file
(
name = tempdb2,
filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go
Pour que ces modifications prennent effet, vous devrez redémarrer le service SQL Server. Donc en ce qui concerne la minimisation des temps d'arrêt, vous êtes contraint au temps qu'il faudra pour le redémarrage du service . Vous n'avez pas à vous soucier du déplacement des fichiers de base de données tempdb
préexistants, car SQL Server recrée toujours les fichiers et les nouveaux emplacements/fichiers seront créés au démarrage du service.
Quant au "1 fichier de données tempdb par cœur", c'est largement un mythe. L'approche correcte consiste à surveiller les conflits de fichiers tempdb
pour les pages PFS (Page Free Space), Global Allocation Map (GAM) et Shared Global Allocation Map (SGAM). Veuillez faire référence cet article pour obtenir une requête(lien alternatif) qui parcourt le sys.dm_os_waiting_tasks
DMV pour voir combien tempdb
contention de fichier existe. Ensuite, vous devez désactiver cela, au lieu de simplement masquer tempdb
avec la même quantité de fichiers qu'il y a de cœurs. C'est l'approche la plus recommandée.
Pour déplacer tempdb, exécutez:
ALTER DATABASE tempdb
MODIFY FILE ( name=tempdev, filename='D:\Newpath\tempdb.mdf')
GO
ALTER DATABASE tempdb
MODIFY FILE ( name=templog, filename='D:\Newpath\templog.ldf')
GO
Redémarrez ensuite votre service SQL Server (MSSQLServer).
Nombre de fichiers dans tempdb - voir l'article de Paul Randall: n mythe SQL Server DBA par jour: (12/30) tempdb doit toujours avoir un fichier de données par cœur de processeur
De conseil de Microsoft :
En règle générale, si le nombre de processeurs logiques est inférieur ou égal à 8, utilisez le même nombre de fichiers de données que les processeurs logiques.
Si le nombre de processeurs logiques est supérieur à 8, utilisez 8 fichiers de données, puis si le conflit persiste, augmentez le nombre de fichiers de données par multiples de 4 (jusqu'au nombre de processeurs logiques) jusqu'à ce que le conflit soit réduit à des niveaux acceptables ou modifications de la charge de travail/du code.
Le déplacement des fichiers TempDB est un processus en 2 étapes:
SQL Server
service pour que la modification prenne effet (il s'agit du temps d'arrêt minimum dont vous avez besoin)Pour indiquer à SQL où créer les nouveaux fichiers TempDB, vous pouvez utiliser:
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];
Cela générera les instructions T-SQL que vous devez exécuter pour déplacer les fichiers vers le nouveau drive:\folder
tu veux. (cliquez sur l'image pour agrandir)
Lorsque vous avez exécuté vos instructions mobiles, vous pouvez réexécuter la requête ci-dessus pour vérifier que le Current Location
la colonne affiche maintenant votre nouveau drive:\folder
.
Une fois que vous êtes satisfait de vos modifications, redémarrez le service SQL Server .