Sql-Server
安全移動和創建新的 tempdb 文件
我想知道兩件事:
- 如何以最少的停機時間安全地移動 tempdb?
- 您需要多少個 tempdb 文件?
每個核心是 1 個文件嗎?那麼 quad-core = 4 tempdb 文件,創建三個新文件?
要移動
tempdb
文件,您只需執行以下操作: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
如果要向 中添加新文件
tempdb
,只需執行以下操作(前提是您要將其添加到PRIMARY
文件組,或創建自己的文件組):alter database tempdb add file ( name = tempdb2, filename = 'C:\YourNewTempdbDir\Tempdb2.ndf' ) go
要使這些更改生效,您需要重新啟動 SQL Server 服務。因此**,就最小化停機時間而言,您受限於服務重啟所需的時間**。您不必擔心移動預先存在的
tempdb
數據庫文件,因為 SQL Server 總是重新創建文件,並且新的位置/文件將在服務啟動時創建。至於“每個核心 1 個 tempdb 數據文件”,這在很大程度上是一個神話。正確的方法是監控
tempdb
頁面可用空間 (PFS)、全域分配映射 (GAM) 和共享全域分配映射 (SGAM) 頁面的文件爭用。請參考這篇文章來獲取一個查詢 (替代連結) ,該查詢通過sys.dm_os_waiting_tasks
DMV 查看有多少tempdb
文件爭用。然後你需要擺脫這個,而不是僅僅覆蓋tempdb
與核心數量相同的文件。這是更可取的方法。