patternsqlMajor
Safely moving and creating new tempdb files
Viewed 0 times
newtempdbcreatingfilesmovingandsafely
Problem
Two things I'd like to know:
Is it 1 file per core? So quad-core = 4 tempdb files, creating three new ones?
- how do you safely move tempdb with minimal downtime?
- how many tempdb files do you need?
Is it 1 file per core? So quad-core = 4 tempdb files, creating three new ones?
Solution
To move
If you want to add a new file to
For these changes to take effect, you will need to restart the SQL Server service. So as far as minimizing downtime goes, you are constrained to the amount of time it will take for the service restart. You don't have to worry about moving the pre-existing
As for the "1 tempdb data file per core", that is largely a myth. The correct approach is to monitor
tempdb files, you simply need to do the following: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'
)
goIf you want to add a new file to
tempdb, you simply need to do the following (provided you want to add it to the PRIMARY filegroup, or create your own):alter database tempdb
add file
(
name = tempdb2,
filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
goFor these changes to take effect, you will need to restart the SQL Server service. So as far as minimizing downtime goes, you are constrained to the amount of time it will take for the service restart. You don't have to worry about moving the pre-existing
tempdb database files, as SQL Server always recreates the files and the new locations/files will be created upon service startup.As for the "1 tempdb data file per core", that is largely a myth. The correct approach is to monitor
tempdb file contention for the Page Free Space (PFS), Global Allocation Map (GAM), and the Shared Global Allocation Map (SGAM) pages. Please reference this article to get a query (alternative link) that looks through the sys.dm_os_waiting_tasks DMV to see how much tempdb file contention there is. Then you need to go off of this, instead of just blanketing tempdb with the same amount of files as there are cores. It's the more advisable approach.Code Snippets
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'
)
goalter database tempdb
add file
(
name = tempdb2,
filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
goContext
StackExchange Database Administrators Q#20734, answer score: 23
Revisions (0)
No revisions yet.