Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x) unter Linux
Dieser Artikel führt Sie zum Aktivieren und Ausführen von tempdb Datenbankdateien im tmpfs-Dateisystem in SQL Server 2025 (17.x).
SQL Server unter Linux und Containern unterstützen traditionell XFS - und ext4-Dateisysteme für die Bereitstellung von SQL Server-Datenbankdateien und -Protokollen. Bei temporären Datenbanken wie tempdb, bei denen Daten nicht von einem Uptime-Zeitraum in einen anderen gespeichert werden müssen, kann die Verwendung eines tmpfs-Dateisystems, das Arbeitsspeicher (RAM) verwendet, die Gesamtleistung für auf tempdb basierende Workloads verbessern.
Weitere Informationen zum Tmpfs-Dateisystem finden Sie in der Dokumentation zum Linux Kernel.
| Konfiguration | Description |
|---|---|
| Unterstützte Konfiguration |
Tmpfs eignet sich ideal zum Speichern nicht persistenter Daten, die nicht über Neustarts gespeichert werden müssen. Derzeit werden nur die tempdb Datenbankdateien im tmpfs-Dateisystem für container- und nicht containerbasierte Bereitstellungen unterstützt. |
| Nicht unterstützte Konfiguration | Das Tmpfs-Dateisystem kann für Benutzerdatenbanken in SQL-Containerbereitstellungen verwendet werden, jedoch nur für Entwicklungszwecke. Diese Konfiguration wird jedoch nicht unterstützt. Sie können Feedback zu diesem Szenario auf GitHub geben. |
Bereitstellungen physischer oder virtueller Computer
Um die Tmpfs-Unterstützung für SQL Server unter Linux auf physischen oder virtuellen Computern zu aktivieren, müssen Sie das tmpfs-Dateisystem ordnungsgemäß bereitstellen, was sudo-Zugriff erfordert. Sobald die Einhängepunkte eingerichtet sind, können Sie die tempdb Dateien auf diesen Einhängepunkten platzieren und SQL Server mit tempdb Dateien starten, die im tmpfs-Dateisystem eingehängt sind.
Aktivieren von tmpfs für tempdb
Erstellen Sie das
tempdb-Verzeichnis.Verwenden Sie den
mkdirBefehl, um ein Verzeichnis für dietempdbDatenbank zu erstellen. Stellen Sie sicher, dass sie dem Benutzer und dermssqlGruppe gehört, um SQL Server-Zugriff zu ermöglichen:sudo mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbMounte das tmpfs-Dateisystem.
Verwenden Sie den folgenden Befehl, um das tmpfs-Dateisystem bereitzustellen:
sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/Die
-tOption gibt den Typ des Dateisystems an, das in diesem Fall lautettmpfs.Mit der
-oOption können Sie Bereitstellungsoptionen angeben.size=4GHier wird die maximale Größe der tmpfs auf 4 GB festgelegt, d. h. sie kann bis zu 4 GB RAM verwenden.Dieser Befehl stellt tmpfs in das Zielverzeichnis bereit, das von der SQL Server-Datenbank
tempdbverwendet wird.Fügen Sie es optional zu
fstabhinzu, um die Einbindungen über Neustarts hinweg beizubehalten.echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstabSpeicherort der Datei
tempdbaktualisieren.Stellen Sie sicher, dass SQL Server ausgeführt wird. Verbinden Sie sich mit Ihrer SQL Server-Instanz über SQL Server Management Studio (SSMS) und führen Sie die folgenden Transact-SQL (T-SQL)-Befehle aus.
Identifizieren Sie alle
tempdbDateien mithilfe des folgenden T-SQL-Skripts, und führen Sie dann denALTER DATABASEBefehl aus, um dentempdbDateispeicherort zu aktualisieren:SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;Basierend auf der Anzahl der angezeigten Dateien
tempdb, erstellen Sie dieALTER DATABASE-Befehle wie folgt: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');Starten Sie SQL Server neu, um die Änderungen anzuwenden.
sudo systemctl restart mssql-serverÜberprüfen Sie
tempdbDateistandorte.Sobald SQL Server läuft, überprüfen Sie, dass die Daten und Protokolldateien
tempdbnun im neuen Verzeichnis liegen, indem Sie sich mit einem Tool wie SSMS mit SQL Server verbinden.SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;
Nun sollten alle tempdb-Datenbankdateien im neuen Bereitstellungspfad /var/opt/mssql/tempdb angezeigt werden können.
Änderung der Größe der tmpfs-Einbindung im laufenden Betrieb
Sie können die tmpfs-Einbindung auch dynamisch anpassen, falls tempdb voll ist. Führen Sie zum Aktualisieren der Größe den folgenden Befehl aus, um die Größe der tmpfs-Einbindung auf 6 GB zu ändern:
sudo mount -o remount,size=6G /var/opt/mssql/tempdb
Optional können Sie die neue Größe über Neustarts hinweg beibehalten, indem Sie den fstab Eintrag ändern:
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
Containerbereitstellungen
Bei Entwickler-Workloads kann tmpfs für Benutzerdatenbanken verwendet werden. Tmpfs-Dateisysteme können Testfälle für Benutzerdatenbanken, die in Containern bereitgestellt werden, erheblich beschleunigen. Da tmpfs RAM anstelle des Datenträgerspeichers verwendet, ermöglicht es schnelle Lese-/Schreibvorgänge. Diese Konfiguration ist in Entwicklungs- und Testumgebungen nützlich, in denen schnelle Iterationen erforderlich sind.
Tmpfs für Benutzerdatenbanken werden jedoch nicht unterstützt. Sie können Feedback zu Benutzerdatenbanken auf Tmpfs auf GitHub geben.
Hoste nur die tempdb Datenbank im tmpfs-Dateisystem
Wenn Sie einen SQL Server-Container bereitstellen und sicherstellen möchten, dass der Container tmpfs für den tempdbContainer verwendet, können Sie den folgenden Befehl ausführen:
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
Mit der Option --tmpfs wird die Größe auf 4 GB und werden uid (Benutzer-ID) sowie gid (Gruppen-ID) auf 10001 gesetzt, um sicherzustellen, dass die erforderlichen Berechtigungen für die Erstellung der tempdb-Dateien korrekt festgelegt sind.
Sobald der Container läuft, verbinde dich mit der SQL Server-Instanz über SSMS und aktualisiere die tempdb Dateistandorte /var/opt/mssql/tempdb mit folgenden T-SQL-Befehlen:
SELECT [name],
physical_name
FROM sys.master_files
WHERE database_id = 2;
Ändern Sie basierend auf der Anzahl der angezeigten Dateien den folgenden Befehl. In diesem Beispiel gibt es vier tempdb Datendateien und eine Logdatei. Verwenden Sie die folgenden Befehle, um die Dateistandorte zu aktualisieren:
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
Nachdem Sie die Dateistandorte aktualisiert haben, stoppen und starten Sie den Container mit folgenden Befehlen neu:
docker stop sql1
docker start sql1
Container mit allen Daten- und Protokolldateien auf tmpfs bereitstellen
Warning
Diese Konfiguration wird nicht unterstützt, kann aber für Entwicklungszwecke verwendet werden. Sie können Feedback zu diesem Szenario auf GitHub geben.
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