J'aimerais savoir deux choses:
- comment déplacer en toute sécurité tempdb avec un temps d'arrêt minimal?
- de combien de fichiers tempdb avez-vous besoin?
S'agit-il d'un fichier par cœur? Donc, quad-core = 4 fichiers tempdb, en créant trois nouveaux?
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?
Réponses:
Pour déplacer des tempdb
fichiers, 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 PRIMARY
fichiers 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. En ce qui concerne la minimisation des temps d'arrêt, vous êtes limité par le temps nécessaire au redémarrage du service . Vous n'avez pas à vous soucier de déplacer les tempdb
fichiers de base de données 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 tempdb
les conflits de fichiers pour les pages Espace libre de page (PFS), Global Allocation Map (GAM) et Shared Global Allocation Map (SGAM). Veuillez consulter cet article pour obtenir une requête (lien alternatif) qui parcourt le sys.dm_os_waiting_tasks
DMV pour voir la tempdb
contention de fichiers. Ensuite, vous devez vous en passer, au lieu de simplement couvrir 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: Un mythe SQL Server DBA par jour: (12/30) tempdb doit toujours avoir un fichier de données par cœur de processeur
D'après les conseils 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 (c'est le 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 que drive:\folder
vous souhaitez. (cliquez sur l'image pour agrandir)
Une fois que vous avez exécuté vos instructions mobiles, vous pouvez réexécuter la requête ci-dessus pour vérifier que la Current Location
colonne affiche désormais votre nouvelle requête drive:\folder
.
Une fois que vous êtes satisfait de vos modifications, redémarrez le service SQL Server .