適用於: Linux 上的 SQL Server 2025 (17.x)
本文將引導你在 SQL Server 2025(17.x)中的 tempdb 檔案系統啟用並執行資料庫檔案。
Linux 上的 SQL Server 和容器傳統上支援 XFS 和 ext4 檔系統,以部署 SQL Server 資料庫檔案和記錄。 不過,對於像 tempdb 這樣不需要將數據從一個運行時間週期儲存到另一個運行時間週期的暫時性資料庫,使用利用記憶體(RAM)的 tmpfs 檔案系統可以增強以 tempdb 為基礎的工作負載的整體效能。
如需 tmpfs 文件系統的詳細資訊,請參閱 tmpfs - Linux 核心檔。
| Configuration | Description |
|---|---|
| 支援的組態 |
tmpfs 非常適合用來儲存不需要在重新啟動後保留的非持續性數據。 目前只有 tempdb 資料庫檔案在 tmpfs 暫存檔系統上同時支援容器和非容器型部署。 |
| 不支援的組態 | tmpfs 檔案系統可用於 SQL 容器部署中的用戶資料庫,但僅供開發之用。 不過,不支援此設定。 您可以在 GitHub 上提供此案例的意見反應。 |
實體或虛擬機部署
若要在實體或虛擬機上啟用 Linux 上 SQL Server 的 tmpfs 支援,您必須正確掛接 tmpfs 文件系統,這需要 sudo 存取權。 設定掛載點之後,您可以將tempdb文件放在這些掛載上,然後使用在tempdb檔案系統上掛載的文件啟動 SQL Server。
啟用 tmpfs 以提高效能 tempdb
建立
tempdb目錄。使用
mkdir命令來為tempdb資料庫建立目錄。 確定它是由mssql使用者和群組所擁有,以允許 SQL Server 存取:sudo 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。此命令會將 tmpfs 掛接至 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實例,並執行以下 Transact-SQL(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 啟用並運作後,請使用 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:
sudo 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 上提供與使用者資料庫相關的意見反應。
僅將 tempdb資料庫託管於 tmpfs 檔案系統
如果您要部署 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;
根據您看到的檔案數目,修改下列命令。 在這個例子中,有四個 tempdb 資料檔案和一個日誌檔案。 請使用以下指令更新檔案位置:
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 上部署具有所有數據和記錄檔的容器
Warning
不支援此設定,但可用於開發用途。 您可以在 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