適用対象: SQL Server 2025 (17.x) プレビュー - Linux
この記事では、SQL Server 2025 (17.x) プレビューで tempdb
ファイルシステムでデータベース ファイルを有効にして実行する方法について説明します。
SQL Server on Linux およびコンテナーでは、従来、SQL Server データベース ファイルとログをデプロイするための XFS および ext4 ファイルシステムがサポートされています。 ただし、 tempdb
などの一時的なデータベースでは、あるアップタイム期間から別のアップタイム期間にデータを保存する必要はありません。メモリ (RAM) を利用する tmpfs ファイルシステムを使用すると、 tempdb
ベースのワークロードの全体的なパフォーマンスを向上させることができます。
tmpfs ファイルシステムの詳細については、tmpfs - Linux カーネルのドキュメントを参照してください。
コンフィギュレーション | 説明 |
---|---|
サポートされている構成 |
tmpfs は、再起動後に保存する必要のない非永続的なデータを格納するのに最適です。 現在、 tempdb データベース ファイルのみが、コンテナーベースのデプロイと非コンテナー ベースのデプロイの両方で tmpfs ファイルシステムでサポートされています。 |
サポートされていない構成 | tmpfs ファイルシステムは、SQL コンテナーデプロイのユーザー データベースに使用できますが、開発目的でのみ使用できます。 ただし、この構成はサポートされていません。 このシナリオに関するフィードバックは 、GitHub で提供できます。 |
物理マシンまたは仮想マシンのデプロイ
物理マシンまたは仮想マシン上の Linux 上の SQL Server で tmpfs のサポートを有効にするには、 tmpfs ファイルシステムを正しくマウントする必要があります。これには sudo アクセスが必要です。 マウント ポイントが設定されたら、これらのマウントにtempdb
ファイルを配置し、tempdb
ファイルシステムにマウントされた ファイルを使用して SQL Server を起動できます。
tmpfs を有効にする tempdb
tempdb
ディレクトリを作成します。mkdir
コマンドを使用して、tempdb
データベースのディレクトリを作成します。 SQL Server アクセスを許可するために、mssql
ユーザーとグループが所有していることを確認します。mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdb
tmpfs ファイルシステムをマウントします。
tmpfs ファイルシステムをマウントするには、次のコマンドを使用します。
sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/
-t
オプションはファイルシステムの種類を指定します。この場合はtmpfs
。-o
オプションを使用すると、マウント オプションを指定できます。 ここでは、size=4G
tmpfs の最大サイズを 4 GB に設定します。つまり、最大 4 GB の RAM を使用できます。このコマンドは、SQL Server データベースで使用されるターゲット ディレクトリに
tempdb
をマウントします。必要に応じて、
fstab
に追加して、再起動の間にマウントを維持します。echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
ファイル
tempdb
場所を更新します。SQL Server が稼働していることを確認します。 SQL Server Management Studio (SSMS) を使用して SQL Server インスタンスに接続し、次の T-SQL コマンドを実行します。
次の T-SQL スクリプトを使用して
tempdb
ファイルをすべて特定し、ALTER DATABASE
コマンドを実行してtempdb
ファイルの場所を更新します。SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;
tempdb
に表示されるファイルの数に基づいて、次のようにALTER DATABASE
コマンドを作成します。ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
SQL Server を再起動して変更を適用します。
sudo systemctl restart mssql-server
ファイル
tempdb
場所を確認します。SQL Server が起動して実行されたら、SQL Server Management Studio (SSMS) などのツールを使用して SQL Server に接続して、
tempdb
データ ファイルとログ ファイルが新しいディレクトリにあることを確認します。
SELECT [name], physical_name
FROM sys.master_files
WHERE database_id = 2;
これで、tempdb
されている新しいマウント パス上のすべての/var/opt/mssql/tempdb
データベース ファイルが表示されます。
tmpfs マウントのホットサイズ変更
がいっぱいになった場合に備えて、tempdb
マウントのホット サイズを変更することもできます。 ホット サイズ変更するには、次のコマンドを実行して tmpfs マウントのサイズを 6 GB に変更します。
mount -o remount,size=6G /var/opt/mssql/tempdb
必要に応じて、 fstab
エントリを変更して、再起動後も新しいサイズを保持します。
sudo sed -i 's|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=6G 0 0|' /etc/fstab
コンテナーのデプロイ
開発者ワークロードでは、 tmpfs をユーザー データベースに使用できます。 tmpfs ファイルシステムは、コンテナーにデプロイされたユーザー データベースのテスト ケースを大幅に高速化できます。 tmpfs はディスク ストレージではなく RAM を使用するため、読み取り/書き込み操作を迅速に行えます。 この構成は、迅速なイテレーションが必要な開発環境およびテスト環境で役立ちます。
ただし、ユーザー データベースの tmpfs はサポート されていません 。 ユーザー データベースに関連するフィードバックは、GitHub の tmpfs で提供できます。
tmpfs ファイルシステムで tempdb
データベースのみをホストする
SQL Server コンテナーをデプロイしていて、コンテナーでに tempdb
が使用されるようにする場合は、次のコマンドを実行できます。
docker run \
-e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD = <password>\
--tmpfs /var/opt/mssql/tempdb:uid=10001,gid=10001,size=4G \
-p 5433:1433 \
--name sql1 \
-h sql1 \
--d mcr.microsoft.com/mssql/server:2025-latest
--tmpfs
コマンドは、サイズを 4 GB に設定し、uid
(ユーザー ID) とgid
(グループ ID) を10001
に設定して、tempdb
ファイルを作成するために必要なアクセス許可が正しく設定されるようにします。
コンテナーが起動して実行されたら、SSMS を使用して SQL Server に接続し、次の T-SQL コマンドを使用して tempdb
ファイルを新しい場所 /var/opt/mssql/tempdb
移動します。
SELECT [name], physical_name
FROM sys.master_files
WHERE database_id = 2;
表示されるファイルの数に基づいて、次のコマンドを変更します。 この例では、4 つの tempdb
ファイルと 1 つのログ ファイルがあります。 これらのファイルを新しい場所に移動するには、次のコマンドを使用します。
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
GO
ファイルを移動した後、次のコマンドを使用してコンテナーを停止して再起動します
docker stop sql1
docker start sql1
すべてのデータ ファイルとログ ファイルを含むコンテナーを tmpfs にデプロイする
Warnung
この構成はサポートされていませんが、開発目的で使用できます。 このシナリオに関するフィードバックは 、GitHub で提供できます。
docker run -e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD=<password> \
--tmpfs /var/opt/mssql/data:uid=10001,gid=10001,size=4G \
-p 5434:1433 \
--name sql2 \
-h sql2 \
-d mcr.microsoft.com/mssql/server:2025-latest