Dela via


Aktivera och köra tempdb på tmpfs för SQL Server 2025 Preview i Linux

Gäller för: Förhandsversion av SQL Server 2025 (17.x) – Linux

Den här artikeln hjälper dig att aktivera och köra tempdb databasfiler på tmpfs-filsystemet i SQL Server 2025 (17.x) Preview.

SQL Server på Linux och containrar har traditionellt stöd för XFS - och ext4-filsystem för distribution av SQL Server-databasfiler och -loggar. Men för tillfälliga databaser som tempdb, som inte kräver att data sparas från en drifttidsperiod till en annan, kan användning av ett tmpfs-filsystem som använder minne (RAM) förbättra övergripande prestanda för tempdb-baserade arbetsbelastningar.

Mer information om tmpfs-filsystemet finns i tmpfs – Linux Kernel-dokumentationen.

Konfiguration Beskrivning
Konfiguration som stöds tmpfs är idealiskt för lagring av icke-beständiga data som inte behöver sparas över omstarter. För närvarande stöds endast databasfilerna tempdb i tmpfs-filsystemet för både container- och icke-containerbaserade distributioner.
Konfiguration som inte stöds tmpfs-filsystem kan användas för användardatabaser i SQL-containerdistributioner, men endast i utvecklingssyfte. Den här konfigurationen stöds dock inte. Du kan ge feedback för det här scenariot på GitHub.

Distributioner av fysiska eller virtuella datorer

Om du vill aktivera tmpfs-stöd för SQL Server på Linux på fysiska eller virtuella datorer måste du montera tmpfs-filsystemet korrekt, vilket kräver sudo-åtkomst. När monteringspunkterna har konfigurerats kan du placera tempdb filerna på dessa monteringar och starta SQL Server med tempdb filer monterade på tmpfs-filsystemet .

Aktivera tmpfs för tempdb

  1. Skapa tempdb katalogen.

    mkdir Använd kommandot för att skapa en katalog för tempdb databasen. Se till att den ägs av mssql användaren och gruppen för att tillåta SQL Server-åtkomst:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Montera tmpfs-filsystem.

    Använd följande kommando för att montera tmpfs-filsystemet :

    sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/
    

    Alternativet -t anger typen av filsystem, som i det här fallet är tmpfs.

    Med -o alternativet kan du ange monteringsalternativ. size=4G Här anger den maximala storleken på tmpfs till 4 GB, vilket innebär att den kan använda upp till 4 GB RAM-minne.

    Det här kommandot monterar tmpfs till målkatalogen som används av SQL Server-databasen tempdb .

    Du kan eventuellt lägga till det i fstab för att bevara monteringar över omstarter.

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

    Kontrollera att SQL Server är igång. Anslut till SQL Server-instansen med SQL Server Management Studio (SSMS) och kör följande T-SQL-kommandon.

    Identifiera alla tempdb filer med hjälp av följande T-SQL-skript och kör ALTER DATABASE sedan kommandot för att uppdatera tempdb filplatsen:

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

    Baserat på antalet filer som du ser för tempdbskapar du kommandona ALTER DATABASE på följande sätt:

    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. Starta om SQL Server för att tillämpa ändringarna.

    sudo systemctl restart mssql-server
    
  5. Kontrollera tempdb platsen för filer.

    När SQL Server är igång kontrollerar du att tempdb data och loggfiler nu finns i den nya katalogen genom att ansluta till SQL Server med hjälp av ett verktyg som SQL Server Management Studio (SSMS).

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

Nu bör du se alla tempdb databasfiler på den nya fästvägen, som är /var/opt/mssql/tempdb.

Snabb storleksändring av tmpfs-monteringen

Du kan också hetskaligt ändra storlek på tmpfs-mounten om den tempdb är full. För att ändra storlek medan systemet är igång, kör följande kommando för att ändra storlek på tmpfs till 6 GB:

mount -o remount,size=6G /var/opt/mssql/tempdb

Du kan också göra så att den nya storleken bevaras mellan omstarter genom att ändra posten 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

Containerdriftsättningar

För utvecklararbetsbelastningar kan tmpfs användas för användardatabaser. tmpfs-filsystem kan avsevärt påskynda testfall för användardatabaser som distribueras i containrar. Eftersom tmpfs använder RAM i stället för disklagring möjliggör det snabba läs-/skrivåtgärder. Den här konfigurationen är användbar i utvecklings- och testmiljöer där snabba iterationer behövs.

Dock stöds inte tmpfs för användardatabaser. Du kan ge feedback om användardatabaser på tmpfsGitHub.

Placera endast tempdb databaser på tmpfs-filsystem

Om du distribuerar en SQL Server-container och vill se till att containern använder tmpfs för tempdbkan du köra följande kommando:

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

Kommandot --tmpfs anger storleken till 4 GB och uid (användar-ID) samt gid (grupp-ID) till 10001 för att säkerställa att de nödvändiga behörigheterna är korrekt inställda för att tempdb-filerna ska skapas.

När containern är igång ansluter du till SQL Server med SSMS och flyttar tempdb filerna till den nya platsen /var/opt/mssql/tempdb med följande T-SQL-kommandon:

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

Ändra följande kommando baserat på antalet filer som du ser. I det här exemplet finns det fyra tempdb filer och en loggfil. Använd följande kommandon för att flytta filerna till den nya platsen:

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

När du har flyttat filerna stoppar och startar du om containern med hjälp av följande kommandon

docker stop sql1
docker start sql1

Driftsätt containers med alla data och loggfiler på tmpfs

Varning

Den här konfigurationen stöds inte, men kan användas i utvecklingssyfte. Du kan ge feedback för det här scenariot på 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