Skip to main content
Enterprise applications
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Microsoft SQL Server 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 檔案數量。