Condividi tramite


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

Si applica a: SQL Server 2025 (17.x) - 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:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Montare il file system 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. Connettersi all'istanza di SQL Server usando SQL Server Management Studio (SSMS) ed eseguire i comandi T-SQL seguenti.

    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. Verificare il tempdb percorso dei file.

    Una volta che SQL Server è operativo, verificare che i tempdb file di dati e di log si trovino nella nuova directory connettendosi a SQL Server usando uno strumento come SQL Server Management Studio (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:

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 tempdb database nel file system 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

Il comando --tmpfs imposta le dimensioni su 4 GB e uid (ID utente) e gid (ID gruppo) a 10001 per assicurarsi che le autorizzazioni necessarie siano impostate correttamente per i file tempdb da creare.

Una volta che il contenitore è operativo, connettersi a SQL Server usando SSMS e spostare i tempdb file nel nuovo percorso /var/opt/mssql/tempdb con i comandi T-SQL seguenti:

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 sono presenti quattro tempdb file e un file di log. Usare i comandi seguenti per spostare questi file nel nuovo percorso:

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 spostato i file, arrestare e riavviare il contenitore usando i comandi seguenti

docker stop sql1
docker start sql1

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

Avvertimento

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