Abilitare ed eseguire tempdb in tmpfs per SQL Server 2025 in Linux

Si applica a: SQL Server 2025 (17.x) su Linux

Questo articolo illustra come abilitare ed eseguire tempdb file di database nel file system tmpfs in SQL Server 2025 (17.x).

SQL Server in Linux e i contenitori supportano tradizionalmente file system XFS e ext4 per la distribuzione di file e log di database di SQL Server. Tuttavia, per i database temporanei come tempdb, che non richiedono il salvataggio dei dati da un periodo di tempo di attività a un altro, l'uso di un file system tmpfs che usa memoria (RAM) può migliorare le prestazioni complessive per tempdbi carichi di lavoro basati su .

Per altre informazioni sul file system tmpfs , vedere tmpfs - La documentazione del kernel Linux.

Configurazione Descrizione
Configurazione supportata tmpfs è ideale per l'archiviazione di dati non persistenti che non devono essere salvati tra riavvii. Attualmente, solo i tempdb file di database sono supportati nel file system tmpfs per le distribuzioni basate su contenitori e non basate su contenitori.
Configurazione non supportata Il file system tmpfs può essere usato per i database utente nelle distribuzioni di contenitori SQL, ma solo a scopo di sviluppo. Tuttavia, questa configurazione non è supportata. È possibile fornire commenti e suggerimenti per questo scenario in GitHub.

Distribuzioni fisiche o di macchine virtuali

Per abilitare il supporto tmpfs per SQL Server in Linux in macchine fisiche o virtuali, è necessario montare correttamente il file system tmpfs , che richiede l'accesso sudo. Dopo aver configurato i punti di montaggio, è possibile posizionare i tempdb file su queste montature e avviare SQL Server con i file tempdb montati sul file system tmpfs.

Abilitare tmpfs per tempdb

  1. Creare la directory tempdb.

    Usare il mkdir comando per creare una directory per il tempdb database. Assicurarsi che sia di proprietà dell'utente e del mssql gruppo per consentire l'accesso a SQL Server:

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Monta il filesystem tmpfs.

    Usare il comando seguente per montare il file system tmpfs :

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

    L'opzione -t specifica il tipo di file system, che in questo caso è tmpfs.

    L'opzione -o consente di specificare le opzioni di montaggio. In questo caso, size=4G imposta la dimensione massima di tmpfs su 4 GB, ovvero può usare fino a 4 GB di RAM.

    Questo comando monta tmpfs nella directory di destinazione usata dal database di SQL Server tempdb .

    Facoltativamente, aggiungerlo a fstab per mantenere i montaggi tra i riavvii:

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Aggiornare il tempdb percorso del file.

    Verificare che SQL Server sia operativo. Connettiti alla tua istanza SQL Server usando SQL Server Management Studio (SSMS) ed esegui i seguenti comandi Transact-SQL (T-SQL).

    Identificare tutti i tempdb file usando lo script T-SQL seguente, quindi eseguire il ALTER DATABASE comando per aggiornare il percorso del tempdb file:

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

    In base al numero di file visualizzati per tempdb, crei i comandi ALTER DATABASE nel modo seguente:

    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. Riavviare SQL Server per applicare le modifiche.

    sudo systemctl restart mssql-server
    
  5. Verifica tempdb la posizione dei file.

    Una volta che SQL Server è attivo, verifica che i tempdb dati e i file di log siano localizzati nella nuova directory collegandoti a SQL Server tramite uno strumento come SSMS.

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

Verranno ora visualizzati tutti i file di tempdb database nel nuovo percorso di montaggio che è /var/opt/mssql/tempdb.

Ridimensionamento a caldo del punto di montaggio tmpfs

È anche possibile ridimensionare a caldo il montaggio tmpfs nel caso in cui sia tempdb pieno. Per ridimensionare a caldo, eseguire il comando seguente per ridimensionare il montaggio tmpfs a 6 GB:

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

Facoltativamente, rendere persistenti le nuove dimensioni tra i riavvii modificando la fstab voce:

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

Distribuzioni di contenitori

Per i carichi di lavoro degli sviluppatori, tmpfs può essere usato per i database utente. I file system tmpfs possono velocizzare notevolmente i test case per i database utente distribuiti nei contenitori. Poiché tmpfs usa RAM anziché l'archiviazione su disco, consente operazioni di lettura/scrittura rapide. Questa configurazione è utile negli ambienti di sviluppo e test in cui sono necessarie iterazioni rapide.

Tuttavia, tmpfs per i database degli utenti non è supportato. È possibile fornire commenti e suggerimenti relativi ai database utente in tmpfs su GitHub.

Ospitare solo il database tempdb nel filesystem tmpfs

Se si distribuisce un contenitore di SQL Server e si vuole assicurarsi che il contenitore usi tmpfs per tempdb, è possibile eseguire il comando seguente:

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

L'opzione --tmpfs imposta la dimensione su 4 GB e i valori di uid (ID utente) e gid (ID gruppo) su 10001 per garantire che i permessi richiesti siano impostati correttamente affinché i file tempdb vengano creati.

Una volta che il container è avviato e in esecuzione, collegati all'istanza di SQL Server tramite SSMS e aggiorna i percorsi dei file tempdb in /var/opt/mssql/tempdb con i seguenti comandi T-SQL:

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

In base al numero di file visualizzati, modificare il comando seguente. In questo esempio, ci sono quattro tempdb file dati e un file di log. Usa i seguenti comandi per aggiornare le posizioni dei file:

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

Dopo aver aggiornato le posizioni dei file, ferma e riavvia il contenitore usando i seguenti comandi:

docker stop sql1
docker start sql1

Distribuire contenitori con tutti i file di dati e di log in tmpfs

Avviso

Questa configurazione non è supportata, ma può essere usata a scopo di sviluppo. È possibile fornire commenti e suggerimenti per questo scenario in 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