Sdílet prostřednictvím


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

Platí pro: SQL Server 2025 (17.x) – Linux

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. U dočasných databází, jako tempdbjsou databáze, které nevyžadují ukládání dat z jednoho období provozu do jiného, ale pomocí systému souborů tmpfs , který využívá paměť (RAM), může zvýšit celkový výkon úloh tempdbzaložených na úlohách.

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

Konfigurace Popis
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ě se v systému souborů tempdb podporují pouze soubory databáze pro nasazení typu kontejner i bez kontejneru.
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 tempdb umístit soubory na tyto připojení a spustit SQL Server se soubory připojenými tempdb v systému souborů 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 je vlastníkem mssql uživatele a skupiny, aby povolil přístup k SQL Serveru:

    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ě ho přidejte, abyste fstab zachovali připojení napříč restartováními:

    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é vidíte tempdb, vytvoříte ALTER DATABASE příkazy následujícím způsobem:

    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, aby se změny použily.

    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 připojení tempdb plné, můžete také změnit velikost za tepla. Pokud chcete změnit velikost za provozu, spusťte následující příkaz a změňte velikost připojení tmpfs na 6 GB:

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

Volitelně můžete novou velikost zachovat v restartování úpravou fstab položky:

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.

Hostování pouze tempdb databází v systému souborů tmpfs

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

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

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

Výstraha

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