Aktivieren und Ausführen von tempdb auf tmpfs für SQL Server 2025 unter Linux

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

  1. Erstellen Sie das tempdb-Verzeichnis.

    Verwenden Sie den mkdir Befehl, um ein Verzeichnis für die tempdb Datenbank zu erstellen. Stellen Sie sicher, dass sie dem Benutzer und der mssql Gruppe gehört, um SQL Server-Zugriff zu ermöglichen:

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Mounte 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 -t Option gibt den Typ des Dateisystems an, das in diesem Fall lautet tmpfs.

    Mit der -o Option können Sie Bereitstellungsoptionen angeben. size=4G Hier 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 tempdb verwendet wird.

    Fügen Sie es optional zu fstab hinzu, um die Einbindungen über Neustarts hinweg beizubehalten.

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Speicherort der Datei tempdb aktualisieren.

    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 tempdb Dateien mithilfe des folgenden T-SQL-Skripts, und führen Sie dann den ALTER DATABASE Befehl aus, um den tempdb Dateispeicherort zu aktualisieren:

    SELECT [name],
           physical_name
    FROM sys.master_files
    WHERE database_id = 2;
    

    Basierend auf der Anzahl der angezeigten Dateien tempdb, erstellen Sie die ALTER 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');
    
  4. Starten Sie SQL Server neu, um die Änderungen anzuwenden.

    sudo systemctl restart mssql-server
    
  5. Überprüfen Sie tempdb Dateistandorte.

    Sobald SQL Server läuft, überprüfen Sie, dass die Daten und Protokolldateien tempdb nun 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