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 tempdb podporovány pouze databázové soubory 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:

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Připojte souborový systém 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 ke své SQL Server instanci pomocí SQL Server Management Studio (SSMS) a spusťte následující Transact-SQL (T-SQL) příkazy.

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

    Jakmile bude SQL Server spuštěn, ověřte, že tempdb data a logovací soubory jsou nyní umístěny v novém adresáři připojením k SQL Server pomocí nástroje jako 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 plný, můžete také za běhu změnit velikost přípojného bodu tempdb. 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:

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

Hostovat pouze databázi tempdb na souborovém systému tmpfs

Pokud nasazujete kontejner SQL Serveru a chcete zajistit, aby kontejner používal pro systém tempdb, 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

Možnost --tmpfs nastaví velikost na 4 GB a uid (uživatelské ID) a gid (ID skupiny) na 10001, aby bylo zajištěno, že požadovaná oprávnění jsou pro vytváření souborů tempdb nastavena správně.

Jakmile je kontejner spuštěn a funkční, připojte se k instanci SQL Server pomocí SSMS a aktualizujte tempdb umístění /var/opt/mssql/tempdb souborů 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 datové soubory a jeden logovací soubor. Použijte následující příkazy k aktualizaci umístění souborů:

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 aktualizaci umístění souborů zastavte a znovu spusťte 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