私が知りたい2つのこと:
コアごとに1ファイルですか?したがって、クアッドコア= 4つのtempdbファイルで、3つの新しいファイルを作成しますか?
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サービスを再起動する必要があります。したがって、ダウンタイムを最小限に抑える限り、サービスの再起動にかかる時間に制限されます。 SQL Serverは常にファイルを再作成し、サービスの起動時に新しい場所/ファイルが作成されるため、既存のtempdb
データベースファイルの移動について心配する必要はありません。
「コアごとに1つのtempdbデータファイル」については、それは主に神話です。正しい方法は、ページ空き領域(PFS)、グローバルアロケーションマップ(GAM)、および共有グローバルアロケーションマップ(SGAM)ページのtempdb
ファイル競合を監視することです。参照してください クエリを取得するにはこの記事(代替リンク)sys.dm_os_waiting_tasks
DMVを使用して、tempdb
ファイルの競合の程度を確認します。次に、コアがあるのと同じ量のファイルでtempdb
を単にブランケットするのではなく、これをやめる必要があります。それはより賢明なアプローチです。
Tempdbを移動するには、次のコマンドを実行します。
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
次に、SQL Serverサービス(MSSQLServer)を再起動します。
Tempdb内のファイル数-Paul Randallの記事を参照してください: 1日あたりのSQL Server DBAの神話:(12/30)tempdbには、プロセッサコアごとに常に1つのデータファイルが必要です
Microsoftのアドバイス から:
原則として、論理プロセッサの数が8以下の場合は、論理プロセッサと同じ数のデータファイルを使用します。
論理プロセッサの数が8を超える場合は、8つのデータファイルを使用し、競合が続く場合は、競合が許容レベルに減少するか、競合がなくなるまで、データファイルの数を4の倍数(論理プロセッサの数まで)増やします。ワークロード/コードの変更。
TempDBファイルの移動は2段階のプロセスです。
SQL Server
サービス(これは最小ダウンタイム必要です)新しいTempDBファイルを作成する場所をSQLに指示するには、次を使用できます。
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];
これにより、ファイルを新しいdrive:\folder
に移動するために実行する必要があるT-SQLステートメントが生成されます。 (画像をクリックすると大きくなります)
移動ステートメントを実行したら、上記のクエリを再度実行して、Current Location
列に新しいdrive:\folder
が表示されていることを確認できます。
変更に満足したら、SQL Serverサービスを再起動します。