Partager via


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.

Paramétrage Descriptif
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 :

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Monter 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 montures lors 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 à l’aide de SQL Server Management Studio (SSMS) et exécutez les commandes T-SQL suivantes.

    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 l’emplacement des tempdb fichiers.

    Une fois SQL Server opérationnel, vérifiez que les tempdb fichiers de données et de journaux se trouvent désormais dans le nouveau répertoire, en vous connectant à SQL Server à l’aide d’un outil tel que SQL Server Management Studio (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 :

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.

Héberger uniquement tempdb des bases 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

La commande --tmpfs fixe la taille à 4 Go, et définit l’ID d’utilisateur uid et l’ID de groupe gid à 10001 pour garantir que les autorisations requises sont correctement configurées pour que les fichiers tempdb soient créés.

Une fois le conteneur opérationnel, connectez-vous à SQL Server à l’aide de SSMS et déplacez les tempdb fichiers vers le nouvel emplacement /var/opt/mssql/tempdb avec les 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 existe quatre tempdb fichiers et un fichier journal. Utilisez les commandes suivantes pour déplacer ces fichiers vers leur nouvel emplacement :

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 déplacé les fichiers, arrêtez et redémarrez le conteneur à l’aide des commandes suivantes

docker stop sql1
docker start sql1

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

Avertissement

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