本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。
tempdb 檔案
貢獻者
建議變更
Tempdb 資料庫可能會過度使用。除了在 ONTAP 上最佳放置使用者資料庫檔案之外、 tempdb 資料檔案放置位置也是減少分配爭用的關鍵
當 SQL Server 必須寫入特殊系統頁面以分配新物件時、頁面爭用可能會發生在通用分配對應( GAM )、共用全域分配對應( SGAM )或頁面可用空間( PFS )頁面上。鎖條會將這些頁面鎖定在記憶體中。在忙碌的 SQL Server 執行個體上、在 tempdb 的系統頁面上取得鎖定可能需要很長時間。這會導致查詢執行時間變慢、也稱為鎖定爭用。請參閱下列建立 tempdb 資料檔案的最佳實務做法:
-
對於 < 或 = 至 8 核心: tempdb 資料檔案 = 核心數
-
若為 > 8 核心: 8 個 tempdb 資料檔案
下列範例指令碼會建立八個 tempdb 檔案、並將 tempdb 移至掛載點、以修改 tempdb C:\MSSQL\tempdb
適用於 SQL Server 2012 及更新版本。
use master go -- Change logical tempdb file name first since SQL Server shipped with logical file name called tempdev alter database tempdb modify file (name = 'tempdev', newname = 'tempdev01'); -- Change location of tempdev01 and log file alter database tempdb modify file (name = 'tempdev01', filename = 'C:\MSSQL\tempdb\tempdev01.mdf'); alter database tempdb modify file (name = 'templog', filename = 'C:\MSSQL\tempdb\templog.ldf'); GO -- Assign proper size for tempdev01 ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev01', SIZE = 10GB ); ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', SIZE = 10GB ); GO -- Add more tempdb files ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev02', FILENAME = N'C:\MSSQL\tempdb\tempdev02.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev03', FILENAME = N'C:\MSSQL\tempdb\tempdev03.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev04', FILENAME = N'C:\MSSQL\tempdb\tempdev04.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev05', FILENAME = N'C:\MSSQL\tempdb\tempdev05.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev06', FILENAME = N'C:\MSSQL\tempdb\tempdev06.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev07', FILENAME = N'C:\MSSQL\tempdb\tempdev07.ndf' , SIZE = 10GB , FILEGROWTH = 10%); ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev08', FILENAME = N'C:\MSSQL\tempdb\tempdev08.ndf' , SIZE = 10GB , FILEGROWTH = 10%); GO
從 SQL Server 2016 開始、在安裝期間會自動偵測作業系統可見的 CPU 核心數量、並根據該數量、 SQL Server 會計算和設定最佳效能所需的 tempdb 檔案數量。