Anmerkung
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 | BESCHREIBUNG |
|---|---|
| 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:mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbtmpfs-Dateisystem einhängen.
Verwenden Sie den folgenden Befehl, um das tmpfs-Dateisystem zu bereitstellen:
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. Stellen Sie mithilfe von SQL Server Management Studio (SSMS) eine Verbindung mit Ihrer SQL Server-Instanz her, und führen Sie die folgenden 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 den Speicherort der Dateien
tempdb.Nachdem SQL Server ausgeführt wurde, stellen Sie sicher, dass sich die
tempdbDaten und Protokolldateien jetzt im neuen Verzeichnis befinden, indem Sie eine Verbindung mit SQL Server mithilfe eines Tools wie SQL Server Management Studio (SSMS) herstellen.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.
Dynamische Größenänderung der tmpfs-Einhängung
Sie können die tmpfs-Einbindung auch dynamisch anpassen, falls diese tempdb voll ist. Führen Sie zum Aktualisieren der Größe den folgenden Befehl aus, um die Größe des tmpfs-Mounts auf 6 GB zu ändern:
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.
Nur tempdb-Datenbanken im tmpfs-Dateisystem hosten.
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
Der --tmpfs-Befehl setzt die Größe auf 4 GB und die uid (Benutzer-ID) sowie die gid (Gruppen-ID) auf 10001, um sicherzustellen, dass die erforderlichen Berechtigungen korrekt festgelegt sind, damit die tempdb-Dateien erstellt werden können.
Sobald der Container ausgeführt wird, stellen Sie mithilfe von SSMS eine Verbindung mit sql Server her, und verschieben Sie die tempdb Dateien mit den folgenden T-SQL-Befehlen an den neuen Speicherort /var/opt/mssql/tempdb :
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 Dateien und eine Protokolldatei. Verwenden Sie die folgenden Befehle, um diese Dateien an den neuen Speicherort zu verschieben:
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
Stoppen Sie den Container, nachdem Sie die Dateien verschoben haben, und starten Sie ihn mit den folgenden Befehlen neu.
docker stop sql1
docker start sql1
Container mit allen Daten- und Protokolldateien auf tmpfs bereitstellen
Warnung
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