Tempdb inschakelen en uitvoeren op tmpfs voor SQL Server 2025 op Linux

Van toepassing op: SQL Server 2025 (17.x) op Linux

Dit artikel begeleidt u bij het inschakelen en uitvoeren tempdb van databasebestanden op het tmpfs-bestandssysteem in SQL Server 2025 (17.x).

SQL Server op Linux en containers ondersteunen traditioneel XFS - en ext4-bestandssysteem voor het implementeren van SQL Server-databasebestanden en -logboeken. Voor tijdelijke databases zoals tempdb, waarvoor geen gegevens hoeven te worden opgeslagen van de ene uptimeperiode naar de andere, kan het gebruik van een tmpfs-bestandssysteem dat geheugen (RAM) gebruikt, de algehele prestaties voor tempdbop -gebaseerde workloads verbeteren.

Voor meer informatie over het tmpfs-bestandssysteemraadpleegt u tmpfs - the Linux Kernel documentation.

Configuratie Description
Ondersteunde configuratie tmpfs is ideaal voor het opslaan van niet-permanente gegevens die niet hoeven te worden opgeslagen tijdens opnieuw opstarten. Op dit moment worden alleen de tempdb databasebestanden ondersteund in het tmpfs-bestandssysteem voor zowel container- als niet-containerimplementaties.
Niet-ondersteunde configuratie Tmpfs-bestandssysteem kan worden gebruikt voor gebruikersdatabases in SQL-containerimplementaties, maar alleen voor ontwikkelingsdoeleinden. Deze configuratie wordt echter niet ondersteund. U kunt feedback geven voor dit scenario op GitHub.

Implementaties van fysieke of virtuele machines

Als u tmpfs-ondersteuning wilt inschakelen voor SQL Server in Linux op fysieke of virtuele machines, moet u het tmpfs-bestandssysteem correct koppelen, waarvoor sudo-toegang is vereist. Zodra de koppelpunten zijn ingesteld, kunt u de tempdb bestanden op deze koppelingen plaatsen en SQL Server starten met tempdb bestanden die zijn gekoppeld aan het tmpfs-bestandssysteem .

Tmpfs inschakelen voor tempdb

  1. Maak de tempdb map.

    Gebruik de mkdir opdracht om een map voor de tempdb database te maken. Zorg ervoor dat deze eigendom is van de mssql gebruiker en groep om TOEGANG tot SQL Server toe te staan:

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Mount het tmpfs-bestandssysteem.

    Gebruik de volgende opdracht om het tmpfs-bestandssysteem te koppelen:

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

    Met de -t optie geeft u het type bestandssysteem op, dat in dit geval .tmpfs

    Met de -o optie kunt u koppelopties opgeven. size=4G Hier stelt u de maximale grootte van de tmpfs in op 4 GB, wat betekent dat het maximaal 4 GB RAM-geheugen kan gebruiken.

    Met deze opdracht wordt tmpfs gekoppeld aan de doelmap van de SQL Server-database tempdb.

    Eventueel kunt u deze aan fstab toevoegen om de koppelingen bij het opnieuw opstarten te behouden:

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

    Zorg ervoor dat SQL Server actief is. Maak verbinding met je SQL Server instantie via SQL Server Management Studio (SSMS) en voer de volgende Transact-SQL (T-SQL) commando's uit.

    Identificeer alle tempdb bestanden met behulp van het volgende T-SQL-script en voer vervolgens de ALTER DATABASE opdracht uit om de tempdb bestandslocatie bij te werken:

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

    Op basis van het aantal bestanden dat u ziet voor tempdb, maakt u de ALTER DATABASE-opdrachten als volgt:

    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. Start SQL Server opnieuw om de wijzigingen toe te passen.

    sudo systemctl restart mssql-server
    
  5. Controleer tempdb de locaties van bestanden.

    Zodra SQL Server operationeel is, controleer dan of de tempdb data en logbestanden nu in de nieuwe map staan door verbinding te maken met SQL Server via een tool als SSMS.

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

Nu ziet u alle tempdb databasebestanden op het nieuwe koppelingspad./var/opt/mssql/tempdb

Direct herformatteren van het tmpfs-mountpunt

U kunt ook het formaat van de tmpfs-koppeling dynamisch wijzigen voor het geval het tempdb vol is. Voer de volgende opdracht uit om de tmpfs-koppeling naar 6 GB te wijzigen:

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

U kunt desgewenst de nieuwe grootte behouden tijdens het opnieuw opstarten door de fstab vermelding te wijzigen:

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

Containerimplementaties

Voor workloads van ontwikkelaars kunnen tmpfs worden gebruikt voor gebruikersdatabases. tmpfs-bestandssysteem kan testcases aanzienlijk versnellen voor gebruikersdatabases die in containers zijn geïmplementeerd. Omdat tmpfs RAM gebruikt in plaats van schijfopslag, kunnen er snelle lees-/schrijfbewerkingen worden uitgevoerd. Deze configuratie is handig in ontwikkel- en testomgevingen waar snelle iteraties nodig zijn.

Tmpfs voor gebruikersdatabases worden echter niet ondersteund. U kunt feedback geven met betrekking tot gebruikersdatabases op tmpfs op GitHub.

Host alleen de tempdb database op het tmpfs-bestandssysteem

Als u een SQL Server-container implementeert en ervoor wilt zorgen dat de container tmpfs gebruikt voor de tempdbcontainer, kunt u de volgende opdracht uitvoeren:

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

De --tmpfs optie stelt de grootte in op 4 GB en de uid (gebruikers-ID) en gid (groeps-ID) op 10001 om ervoor te zorgen dat de vereiste rechten correct zijn ingesteld voor de tempdb te maken bestanden.

Zodra de container is opgestart en actief is, maak je via SSMS verbinding met de SQL Server-instantie en werk je de bestandslocaties bij van tempdb naar /var/opt/mssql/tempdb met behulp van de volgende T-SQL-opdrachten:

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

Wijzig de volgende opdracht op basis van het aantal bestanden dat u ziet. In dit voorbeeld zijn er vier tempdb databestanden en één logbestand. Gebruik de volgende commando's om de bestandslocaties bij te werken:

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

Nadat je de bestandslocaties hebt bijgewerkt, stop en herstart je de container met de volgende commando's:

docker stop sql1
docker start sql1

Containers uitrollen met alle gegevens en logbestanden op tmpfs

Warning

Deze configuratie wordt niet ondersteund, maar kan worden gebruikt voor ontwikkelingsdoeleinden. U kunt feedback geven voor dit scenario op 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