Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
Maak de
tempdbmap.Gebruik de
mkdiropdracht om een map voor detempdbdatabase te maken. Zorg ervoor dat deze eigendom is van demssqlgebruiker en groep om TOEGANG tot SQL Server toe te staan:sudo mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbMount 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
-toptie geeft u het type bestandssysteem op, dat in dit geval .tmpfsMet de
-ooptie kunt u koppelopties opgeven.size=4GHier 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
fstabtoevoegen 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/fstabWerk de bestandslocatie
tempdbbij.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
tempdbbestanden met behulp van het volgende T-SQL-script en voer vervolgens deALTER DATABASEopdracht uit om detempdbbestandslocatie 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 deALTER 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');Start SQL Server opnieuw om de wijzigingen toe te passen.
sudo systemctl restart mssql-serverControleer
tempdbde locaties van bestanden.Zodra SQL Server operationeel is, controleer dan of de
tempdbdata 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