SQL ServerでTempDBをSSDドライブに移すとパフォーマンスが向上するという話を聞きました。
どのような手順でTempDBを移動するのでしょうか?
TempDBを移動する手順を紹介します。
はじめに tempdb のファイルを調べます。次の SQL を実行します。
SELECT
DB_NAME(database_id) AS db,
type_desc,
physical_name,
LEFT(physical_name, 2) AS drive
FROM sys.master_files
WHERE database_id IN (
DB_ID('tempdb')
)
ORDER BY drive, db;
以下のような結果が表示されます。
| db | type_desc | physical_name | drive |
|---|---|---|---|
| tempdb | ROWS | D:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf | D: |
| tempdb | LOG | D:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf | D: |
| tempdb | ROWS | D:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf | D: |
| tempdb | ROWS | D:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf | D: |
| tempdb | ROWS | D:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf | D: |
見つかったTempDBのファイルに対して、以下のALTER DATABSE を実行します。
次のSQLを実行します。
USE [master]
GO
-- 現在の TempDB ファイル構成確認
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
-- ファイルパス変更(次回起動時に有効)
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf');
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf');
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf');
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf');
ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = '(移動先ドライブ):\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf');
再度以下のSQLを実行して、ファイルパスが変化していることを確認します。
SELECT
DB_NAME(database_id) AS db,
type_desc,
physical_name,
LEFT(physical_name, 2) AS drive
FROM sys.master_files
WHERE database_id IN (
DB_ID('tempdb')
)
ORDER BY drive, db;
以下のような結果が表示されます。
| db | type_desc | physical_name | drive |
|---|---|---|---|
| tempdb | ROWS | E:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf | E: |
| tempdb | LOG | E:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf | E: |
| tempdb | ROWS | E:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_2.ndf | E: |
| tempdb | ROWS | E:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_3.ndf | E: |
| tempdb | ROWS | E:\Microsoft\SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb_mssql_4.ndf | E: |
以上でTempDBの移動は完了です。