Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
Créez le répertoire
tempdb.Utilisez la
mkdircommande pour créer un répertoire pour latempdbbase de données. Vérifiez qu’il appartient à l’utilisateur et au groupe d’autoriser l’accèsmssqlà SQL Server :mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbMonter 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
-tspécifie le type de système de fichiers, qui, dans ce cas, esttmpfs.L’option
-ovous permet de spécifier les options de montage. Ici,size=4Gdé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 à
fstabpour maintenir les montures lors des redémarrages.echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstabMettez à jour
tempdbl’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
tempdbfichiers à l’aide du script T-SQL suivant, puis exécutez laALTER DATABASEcommande pour mettre à jour l’emplacement dutempdbfichier :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 commandesALTER DATABASEcomme 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');Redémarrez SQL Server pour appliquer les modifications.
sudo systemctl restart mssql-serverVérifiez l’emplacement des
tempdbfichiers.Une fois SQL Server opérationnel, vérifiez que les
tempdbfichiers 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