it-swarm.com.de

Sicheres Verschieben und Erstellen neuer Tempdb-Dateien

Zwei Dinge, die ich gerne wissen würde:

  • wie können Sie Tempdb mit minimalen Ausfallzeiten sicher verschieben?
  • wie viele Tempdb-Dateien benötigen Sie?

Ist es 1 Datei pro Kern? Also Quad-Core = 4 Tempdb-Dateien, drei neue erstellen?

22
Stuart Blackler

Um tempdb -Dateien zu verschieben, müssen Sie lediglich Folgendes tun:

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

Wenn Sie tempdb eine neue Datei hinzufügen möchten, müssen Sie lediglich Folgendes tun (vorausgesetzt, Sie möchten sie der Dateigruppe PRIMARY hinzufügen oder eine eigene erstellen):

alter database tempdb
add file
(
    name = tempdb2,
    filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go

Damit diese Änderungen wirksam werden, müssen Sie den SQL Server-Dienst neu starten. Also Um Ausfallzeiten zu minimieren, sind Sie auf die Zeit beschränkt, die für den Neustart des Dienstes benötigt wird. Sie müssen sich keine Gedanken über das Verschieben der bereits vorhandenen tempdb -Datenbankdateien machen, da SQL Server die Dateien immer neu erstellt und die neuen Speicherorte/Dateien beim Start des Dienstes erstellt werden.

Die "1 Tempdb-Datendatei pro Kern" ist größtenteils ein Mythos. Der richtige Ansatz besteht darin, tempdb - Dateikonflikte für die Seiten Page Free Space (PFS), Global Allocation Map (GAM) und Shared Global Allocation Map (SGAM) zu überwachen. Bitte verweisen Sie auf dieser Artikel, um eine Abfrage zu erhalten(alternativer Link) , der durch das sys.dm_os_waiting_tasks DMV, um zu sehen, wie viel tempdb Dateikonflikt vorliegt. Dann müssen Sie davon Abstand nehmen, anstatt nur tempdb mit der gleichen Anzahl von Dateien zu bedecken, wie es Kerne gibt. Es ist der ratsamere Ansatz.

22
Thomas Stringer
  1. Führen Sie Folgendes aus, um tempdb zu verschieben:

    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
    

    Starten Sie dann Ihren SQL Server-Dienst (MSSQLServer) neu.

  2. Anzahl der Dateien in Tempdb - siehe Paul Randalls Artikel: Ein SQL Server-DBA-Mythos pro Tag: (30.12.) Tempdb sollte immer eine Datendatei pro Prozessorkern haben

8
jl01

Von Microsoft-Rat :

Wenn die Anzahl der logischen Prozessoren kleiner oder gleich 8 ist, verwenden Sie in der Regel dieselbe Anzahl von Datendateien wie logische Prozessoren.

Wenn die Anzahl der logischen Prozessoren größer als 8 ist, verwenden Sie 8 Datendateien. Wenn der Konflikt weiterhin besteht, erhöhen Sie die Anzahl der Datendateien um ein Vielfaches von 4 (bis zur Anzahl der logischen Prozessoren), bis der Konflikt auf ein akzeptables Maß reduziert ist Änderungen an der Arbeitslast/dem Code.

Das Verschieben der TempDB-Dateien erfolgt in zwei Schritten:

  1. Sagen Sie SQL wo, dass Ihre neuen TempDB-Dateien gespeichert werden sollen (dies hat keine Ausfallzeit).
  2. Neustart der SQL Server - Dienst, damit die Änderung wirksam wird (dies ist die minimale Ausfallzeit, die Sie benötigen)

Um SQL mitzuteilen, wo die neuen TempDB-Dateien erstellt werden sollen, können Sie Folgendes verwenden:

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];

Dadurch werden die T-SQL-Anweisungen generiert, die Sie ausführen müssen, um die Dateien in den gewünschten neuen drive:\folder Zu verschieben. (Klicken Sie auf das Bild, um es zu vergrößern)

(Image showing 2 rows with details on TempDB files and T-SQL statements to move them

Wenn Sie Ihre Moving-Anweisungen ausgeführt haben, können Sie die obige Abfrage erneut ausführen, um zu überprüfen, ob in der Spalte Current Location Jetzt Ihr neuer drive:\folder Angezeigt wird.

(Image showing TempDB files' new locations

Wenn Sie mit Ihren Änderungen zufrieden sind, Starten Sie den SQL Server-Dienst neu.

5
Oreo