Teilen über


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 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

  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:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. tmpfs-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 -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. 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 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 den Speicherort der Dateien tempdb.

    Nachdem SQL Server ausgeführt wurde, stellen Sie sicher, dass sich die tempdb Daten 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