Ativar e executar o tempdb no tmpfs para SQL Server 2025 no Linux

Aplica-se a: SQL Server 2025 (17.x) em Linux

Este artigo orienta-o a ativar e executar tempdb ficheiros de base de dados no sistema de ficheiros tmpfs no SQL Server 2025 (17.x).

O SQL Server no Linux e contêineres tradicionalmente oferecem suporte a sistemas de arquivos XFS e ext4 para implantar arquivos e logs de banco de dados do SQL Server. No entanto, para bancos de dados temporários como tempdb, que não exigem que os dados sejam salvos de um período de tempo de atividade para outro, o uso de um sistema de arquivos tmpfs que utiliza memória (RAM) pode melhorar o desempenho geral para cargas de trabalho baseadas em tempdb.

Para obter mais informações sobre o sistema de arquivos tmpfs , consulte tmpfs - A documentação do kernel Linux.

Configuração Description
Configuração suportada O TMPFS é ideal para armazenar dados não persistentes que não precisam ser salvos em reinicializações. Atualmente, apenas os tempdb ficheiros de banco de dados são suportados no sistema de ficheiros tmpfs para implementações baseadas em contêiner e não contêiner.
Configuração não suportada O sistema de arquivos tmpfs pode ser usado para bancos de dados de usuários em implantações de contêiner SQL, mas apenas para fins de desenvolvimento. No entanto, essa configuração não é suportada. Você pode fornecer comentários sobre esse cenário no GitHub.

Implantações de máquinas físicas ou virtuais

Para habilitar o suporte a tmpfs para SQL Server no Linux em máquinas físicas ou virtuais, você precisa montar o sistema de arquivos tmpfs corretamente, o que requer acesso sudo. Depois que os pontos de montagem estiverem configurados, você poderá colocar os arquivos nessas montagens e iniciar o tempdb SQL Server com tempdb arquivos montados no sistema de arquivos tmpfs .

Ativar tmpfs para tempdb

  1. Crie o tempdb diretório.

    Use o mkdir comando para criar um diretório para o tempdb banco de dados. Certifique-se de que isso pertença ao mssql usuário e grupo para permitir o acesso ao SQL Server.

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Monte o sistema de ficheiros tmpfs.

    Use o seguinte comando para montar o sistema de arquivos tmpfs :

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

    A -t opção especifica o tipo de sistema de arquivos, que neste caso é tmpfs.

    A -o opção permite especificar opções de montagem. Aqui, size=4G define o tamanho máximo do tmpfs para 4 GB, o que significa que pode usar até 4 GB de RAM.

    Este comando monta tmpfs no diretório de destino usado pelo banco de dados do SQL Server tempdb .

    Opcionalmente, adicione-o ao fstab para manter os pontos de montagem durante as reinicializações.

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Atualize o tempdb local do arquivo.

    Verifique se o SQL Server está instalado e em execução. Ligue-se à sua instância SQL Server usando SQL Server Management Studio (SSMS) e execute os seguintes comandos Transact-SQL (T-SQL).

    Identifique todos os tempdb arquivos usando o seguinte script T-SQL e execute o ALTER DATABASE comando para atualizar o local do tempdb arquivo:

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

    Com base no número de arquivos que você vê para tempdb, você cria os ALTER DATABASE comandos da seguinte maneira:

    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. Reinicie o SQL Server para aplicar as alterações.

    sudo systemctl restart mssql-server
    
  5. Verificar tempdb a localização dos ficheiros.

    Assim que o SQL Server estiver a funcionar, verifique se os tempdb dados e ficheiros de registo estão agora localizados no novo diretório ligando-o ao SQL Server através de uma ferramenta como o SSMS.

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

Agora você deve ver todos os tempdb arquivos de banco de dados no novo caminho de montagem que é /var/opt/mssql/tempdb.

Redimensionamento a quente do suporte tmpfs

Também pode redimensionar a quente o ponto de montagem tmpfs caso tempdb esteja cheio. Para ajustar dinamicamente o tamanho, execute o seguinte comando para redimensionar a montagem tmpfs para 6 GB:

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

Opcionalmente, faça com que o novo tamanho persista nas reinicializações modificando a fstab entrada:

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

Implantações de contêiner

Para cargas de trabalho de desenvolvedor, o tmpfs pode ser usado para bancos de dados de usuários. Os sistemas de arquivos TMPFS podem acelerar significativamente os casos de teste para bancos de dados de usuários implantados em contêineres. Como o tmpfs usa RAM em vez de armazenamento em disco, ele permite operações rápidas de leitura/gravação. Essa configuração é útil em ambientes de desenvolvimento e teste onde iterações rápidas são necessárias.

No entanto, tmpfs não é suportado para bancos de dados de utilizadores. Você pode fornecer comentários relacionados a bancos de dados de usuários no tmpfs no GitHub.

Aloje apenas a tempdb base de dados no sistema de ficheiros tmpfs

Se você estiver implantando um contêiner do SQL Server e quiser garantir que o contêiner use tmpfs para o tempdb, poderá executar o seguinte comando:

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

A opção --tmpfs define o tamanho como 4 GB e define uid (ID do utilizador) e gid (ID do grupo) como 10001 para garantir que as permissões necessárias são corretamente definidas para que os ficheiros tempdb sejam criados.

Quando o contentor estiver a funcionar, ligue-se à instância do SQL Server com o SSMS e atualize as localizações de ficheiro de tempdb para /var/opt/mssql/tempdb com os seguintes comandos T-SQL:

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

Com base no número de arquivos exibidos, modifique o comando a seguir. Neste exemplo, existem quatro tempdb ficheiros de dados e um ficheiro de registo. Use os seguintes comandos para atualizar as localizações dos ficheiros:

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

Depois de atualizar as localizações dos ficheiros, pare e reinicie o contentor usando os seguintes comandos:

docker stop sql1
docker start sql1

Implante contêineres com todos os dados e arquivos de log no tmpfs

Warning

Esta configuração não é suportada, mas pode ser usada para fins de desenvolvimento. Você pode fornecer comentários sobre esse cenário no 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