Povolení a spuštění tempdb v tmpfs pro SQL Server 2025 v Linuxu

Platí pro: SQL Server 2025 (17.x) na Linuxu

Tento článek vás provede povolením a spuštěním tempdb databázových souborů v systému souborů tmpfs v SYSTÉMU SQL Server 2025 (17.x).

SQL Server v Linuxu a kontejnerech tradičně podporuje systémy souborů XFS a ext4 pro nasazování databázových souborů a protokolů SQL Serveru. Nicméně u dočasných databází, jako je tempdb, které nevyžadují ukládání dat mezi jednotlivými obdobími běhu, může použití souborového systému tmpfs, který využívá paměť (RAM), zvýšit celkový výkon úloh založených na tempdb.

Další informace o systému souborů tmpfs najdete v dokumentaci k jádru Linuxu.

Konfigurace Description
Podporovaná konfigurace Tmpfs je ideální pro ukládání ne trvalých dat, která není potřeba ukládat při restartování. V současné době jsou v souborovém systému tmpfs podporovány pouze databázové soubory tempdb pro nasazení v kontejneru i mimo kontejner.
Nepodporovaná konfigurace: Systém souborů tmpfs lze použít pro uživatelské databáze v nasazeních kontejnerů SQL, ale pouze pro účely vývoje. Tato konfigurace se ale nepodporuje. Na GitHubu můžete poskytnout zpětnou vazbu k tomuto scénáři.

Nasazení fyzických nebo virtuálních počítačů

Pokud chcete povolit podporu tmpfs pro SQL Server v Linuxu na fyzických nebo virtuálních počítačích, musíte správně připojit systém souborů tmpfs , který vyžaduje přístup sudo. Po nastavení přípojných bodů můžete soubory tempdb umístit do těchto přípojných bodů a spustit SQL Server se soubory připojenými pomocí tempdb k souborovému systému tmpfs.

Povolení tmpfs pro tempdb

  1. tempdb Vytvořte adresář.

    mkdir Pomocí příkazu vytvořte adresář pro tempdb databázi. Ujistěte se, že vlastníkem je uživatel a skupina mssql, aby měl SQL Server přístup:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Připojte systém souborů tmpfs.

    K připojení systému souborů tmpfs použijte následující příkaz:

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

    Možnost -t určuje typ systému souborů, který v tomto případě je tmpfs.

    Tato -o možnost umožňuje zadat možnosti připojení. size=4G Tady nastaví maximální velikost tmpfs na 4 GB, což znamená, že může používat až 4 GB paměti RAM.

    Tento příkaz připojí tmpfs k cílovému adresáři používanému databází SQL Serveru tempdb .

    Volitelně jej přidejte do fstab, aby připojení zůstala zachována i po restartu:

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Aktualizujte tempdb umístění souboru.

    Ujistěte se, že je SQL Server v provozu. Připojte se k instanci SQL Serveru pomocí aplikace SQL Server Management Studio (SSMS) a spuštěním následujících příkazů T-SQL.

    Identifikujte všechny tempdb soubory pomocí následujícího skriptu T-SQL a pak spuštěním ALTER DATABASE příkazu aktualizujte tempdb umístění souboru:

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

    Na základě počtu souborů, které uvidíte pro tempdb, vytvoříte příkazy ALTER DATABASE takto:

    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. Restartujte SQL Server pro aktivaci změn.

    sudo systemctl restart mssql-server
    
  5. Ověřte tempdb umístění souborů.

    Po zprovoznění SQL Serveru ověřte, že tempdb se data a soubory protokolů teď nacházejí v novém adresáři, a to připojením k SQL Serveru pomocí nástroje, jako je SQL Server Management Studio (SSMS).

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

Nyní byste měli vidět všechny tempdb soubory databáze na nové cestě připojení, která je /var/opt/mssql/tempdb.

Horká změna velikosti připojení tmpfs

Pokud je tempdb plný, můžete také za běhu změnit velikost přípojného bodu tmpfs. Chcete-li za běhu změnit velikost, spusťte následující příkaz pro změnu velikosti přípojného bodu tmpfs na 6 GB:

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

Případně můžete novou velikost zachovat i po restartu úpravou položky 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

Nasazení kontejnerů

Pro úlohy vývojářů je možné použít tmpfs pro uživatelské databáze. Systémy souborů tmpfs můžou výrazně zrychlit testovací případy pro uživatelské databáze nasazené v kontejnerech. Vzhledem k tomu, že tmpfs místo diskového úložiště využívá paměť RAM, umožňuje rychlé operace čtení a zápisu. Tato konfigurace je užitečná ve vývojových a testovacích prostředích, kde jsou potřeba rychlé iterace.

Tmpfs pro uživatelské databáze se ale nepodporuje. Můžete poskytnout zpětnou vazbu související s uživatelskými databázemi v tmpfs na GitHubu.

Hostujte pouze tempdb databáze na souborovém systému tmpfs

Pokud nasazujete kontejner SQL Serveru a chcete zajistit, aby kontejner používal pro tempdb systém tmpfs, můžete spustit následující příkaz:

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

Příkaz --tmpfs nastaví velikost na 4 GB a uid (ID uživatele) a gid (ID skupiny) na 10001, aby byla požadovaná oprávnění pro vytvoření souborů tempdb správně nastavena.

Jakmile je kontejner spuštěný, připojte se k SQL Serveru pomocí aplikace SSMS a přesuňte tempdb soubory do nového umístění /var/opt/mssql/tempdb pomocí následujících příkazů T-SQL:

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

Na základě počtu zobrazených souborů upravte následující příkaz. V tomto příkladu jsou čtyři tempdb soubory a jeden soubor protokolu. Pomocí následujících příkazů přesuňte tyto soubory do nového umístění:

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

Po přesunutí souborů zastavte a restartujte kontejner pomocí následujících příkazů.

docker stop sql1
docker start sql1

Nasazení kontejnerů se všemi daty a soubory protokolů v tmpfs

Warning

Tato konfigurace není podporovaná, ale je možné ji použít pro účely vývoje. Na GitHubu můžete poskytnout zpětnou vazbu k tomuto scénáři.

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