Activer et exécuter tempdb sur tmpfs pour SQL Server 2025 sur Linux

S’applique à : SQL Server 2025 (17.x) sur Linux

Cet article vous guide pour activer et exécuter tempdb des fichiers de base de données sur le système de fichiers tmpfs dans SQL Server 2025 (17.x).

SQL Server sur Linux et les conteneurs prennent traditionnellement en charge les systèmes de fichiers XFS et ext4 pour le déploiement de fichiers et journaux de base de données SQL Server. Toutefois, pour les bases de données temporaires telles que tempdb, qui ne nécessitent pas d’enregistrement de données d’une période d’activité à une autre, l’utilisation d’un système de fichiers tmpfs qui utilise la mémoire (RAM) peut améliorer les performances générales des charges de travail basées sur tempdb.

Pour plus d’informations sur le système de fichiers tmpfs , consultez la documentation tmpfs - Noyau Linux.

Configuration Description
Configuration supportée Tmpfs est idéal pour stocker des données non persistantes qui n’ont pas besoin d’être enregistrées entre les redémarrages. Actuellement, seuls les tempdb fichiers de base de données sont pris en charge sur le système de fichiers tmpfs pour les déploiements basés sur des conteneurs et des non-conteneurs.
Configuration non prise en charge Le système de fichiers tmpfs peut être utilisé pour les bases de données utilisateur dans les déploiements de conteneurs SQL, mais uniquement à des fins de développement. Toutefois, cette configuration n’est pas prise en charge. Vous pouvez fournir des commentaires pour ce scénario sur GitHub.

Déploiements de machines physiques ou virtuelles

Pour activer la prise en charge de tmpfs pour SQL Server sur Linux sur des machines physiques ou virtuelles, vous devez monter correctement le système de fichiers tmpfs , ce qui nécessite un accès sudo. Une fois les points de montage configurés, vous pouvez placer les fichiers tempdb sur ces points de montage et démarrer SQL Server avec les fichiers tempdb montés sur le système de fichiers tmpfs.

Activer tmpfs pour tempdb

  1. Créez le répertoire tempdb.

    Utilisez la mkdir commande pour créer un répertoire pour la tempdb base de données. Vérifiez qu’il appartient à l’utilisateur et au groupe d’autoriser l’accès mssql à SQL Server :

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Montez le système de fichiers tmpfs.

    Utilisez la commande suivante pour monter le système de fichiers tmpfs :

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

    L’option -t spécifie le type de système de fichiers, qui, dans ce cas, est tmpfs.

    L’option -o vous permet de spécifier les options de montage. Ici, size=4G définit la taille maximale des tmpfs sur 4 Go, ce qui signifie qu’elle peut utiliser jusqu’à 4 Go de RAM.

    Cette commande monte tmpfs dans le répertoire cible utilisé par la base de données SQL Server tempdb .

    Si vous le souhaitez, ajoutez-le à fstab pour maintenir les montages au fil des redémarrages :

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Mettez à jour tempdb l’emplacement du fichier.

    Vérifiez que SQL Server est opérationnel. Connectez-vous à votre instance SQL Server via SQL Server Management Studio (SSMS) et exécutez les commandes Transact-SQL suivantes (T-SQL).

    Identifiez tous les tempdb fichiers à l’aide du script T-SQL suivant, puis exécutez la ALTER DATABASE commande pour mettre à jour l’emplacement du tempdb fichier :

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

    En fonction du nombre de fichiers que vous voyez pour tempdb, vous créez des commandes ALTER DATABASE comme suit :

    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. Redémarrez SQL Server pour appliquer les modifications.

    sudo systemctl restart mssql-server
    
  5. Vérifiez tempdb l’emplacement des fichiers.

    Une fois SQL Server opérationnel, vérifiez que les tempdb données et les fichiers journaux sont désormais situés dans le nouveau répertoire en vous connectant à SQL Server à l’aide d’un outil comme SSMS.

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

Vous devez maintenant voir tous les tempdb fichiers de base de données sur le nouveau chemin de montage qui est /var/opt/mssql/tempdb.

Redimensionnement à chaud du montage tmpfs

Vous pouvez également redimensionner à chaud le montage tmpfs si le tempdb est plein. Pour effectuer un redimensionnement à chaud, exécutez la commande suivante pour redimensionner le montage tmpfs à 6 Go :

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

Si vous le souhaitez, rendre la nouvelle taille persistante entre les redémarrages en modifiant l’entrée 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

Déploiements de conteneurs

Pour les charges de travail des développeurs, tmpfs peut être utilisé pour les bases de données utilisateur. Les systèmes de fichiers tmpfs peuvent accélérer considérablement les cas de test pour les bases de données utilisateur déployées dans des conteneurs. Étant donné que tmpfs utilise la RAM au lieu du stockage sur disque, il permet d’effectuer des opérations de lecture/écriture rapides. Cette configuration est utile dans les environnements de développement et de test où des itérations rapides sont nécessaires.

Toutefois, tmpfs pour les bases de données utilisateur n’est pas pris en charge. Vous pouvez fournir des commentaires relatifs aux bases de données utilisateur sur tmpfs sur GitHub.

N’hébergez que la tempdb base de données sur le système de fichiers tmpfs

Si vous déployez un conteneur SQL Server et souhaitez vous assurer que le conteneur utilise tmpfs pour le tempdb, vous pouvez exécuter la commande suivante :

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’option --tmpfs définit la taille sur 4 Go et les identifiants uid (utilisateur) et gid (groupe) à 10001 afin de s’assurer que les autorisations requises sont correctement définies pour que les fichiers tempdb puissent être créés.

Une fois le conteneur en cours d’exécution, connectez-vous à l’instance SQL Server à l’aide de SSMS et mettez à jour les emplacements de fichier tempdb sur /var/opt/mssql/tempdb à l’aide des commandes T-SQL suivantes :

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

En fonction du nombre de fichiers que vous voyez, modifiez la commande suivante. Dans cet exemple, il y a quatre tempdb fichiers de données et un fichier journal. Utilisez les commandes suivantes pour mettre à jour les emplacements des fichiers :

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

Après avoir mis à jour les emplacements des fichiers, arrêtez et redémarrez le conteneur en utilisant les commandes suivantes :

docker stop sql1
docker start sql1

Déployer des conteneurs avec tous les fichiers journaux et les fichiers de données sur tmpfs

Warning

Cette configuration n’est pas prise en charge, mais peut être utilisée à des fins de développement. Vous pouvez fournir des commentaires pour ce scénario sur 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