Compartilhar via


Habilitar e executar tempdb em tmpfs para SQL Server 2025 no Linux

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

Este artigo orienta você a habilitar e executar tempdb arquivos de banco de dados no sistema de arquivos tmpfs no SQL Server 2025 (17.x).

O SQL Server em Linux e contêineres tradicionalmente dão 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 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 do Linux.

Configuração Descrição
Configuração com suporte O tmpfs é ideal para armazenar dados não persistentes que não precisam ser salvos entre reinicializações. Atualmente, somente os arquivos de banco de dados têm suporte no sistema de arquivos tempdb para implantações em contêiner e não contêiner.
Configuração sem suporte O sistema de arquivos tmpfs pode ser usado para bancos de dados de usuário em implantações de contêiner do SQL, mas apenas para fins de desenvolvimento. No entanto, essa configuração não tem suporte. Você pode fornecer comentários para esse cenário no GitHub.

Implantações de máquina física ou virtual

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

Habilitar tmpfs para tempdb

  1. Crie o diretório tempdb.

    Use o mkdir comando para criar um diretório para o tempdb banco de dados. Verifique se ele pertence ao mssql usuário e ao grupo para permitir o acesso ao SQL Server:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Monte o sistema de arquivos 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 nesse caso é tmpfs.

    A -o opção permite que você especifique as opções de montagem. Aqui, size=4G define o tamanho máximo dos tmpfs como 4 GB, o que significa que ele pode usar até 4 GB de RAM.

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

    Opcionalmente, adicione-o ao fstab para manter as montagens durante reinicializações.

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

    Verifique se o SQL Server está em execução. Conecte-se à instância do SQL Server usando o SSMS (SQL Server Management Studio) e execute os comandos T-SQL a seguir.

    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 comandos ALTER DATABASE 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. Verifique o local dos tempdb arquivos.

    Depois que o SQL Server estiver em execução, verifique se os tempdb arquivos de log e de dados agora estão localizados no novo diretório, conectando-se ao SQL Server usando uma ferramenta como o SSMS (SQL Server Management Studio).

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

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

Redimensionamento frequente da montagem de tmpfs

Você também pode redimensionar a montagem de tmpfs caso ela tempdb esteja cheia. Para redimensionamento a quente, execute o seguinte comando para alterar o ponto de montagem tmpfs para 6 GB:

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

Opcionalmente, faça com que o novo tamanho persista entre 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, os tmpfs podem ser usados para bancos de dados de usuário. Os sistemas de arquivos tmpfs podem acelerar significativamente os casos de teste para bancos de dados de usuário 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 em que iterações rápidas são necessárias.

No entanto, não há suporte para tmpfs para bancos de dados de usuário. Você pode fornecer comentários relacionados a bancos de dados de usuário em tmpfs no GitHub.

Alojamento somente de tempdb bancos de dados no sistema de arquivos tmpfs

Se você estiver implantando um contêiner do SQL Server e quiser garantir que o contêiner use tmpfs para o tempdb, execute 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

O comando --tmpfs define o tamanho como 4 GB e define a ID do usuário uid e a ID do grupo gid para 10001, garantindo que as permissões necessárias sejam definidas corretamente para que os arquivos tempdb sejam criados.

Depois que o contêiner estiver em execução, conecte-se ao SQL Server usando o SSMS e mova os tempdb arquivos para o novo local /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 que você vê, modifique o comando a seguir. Neste exemplo, há quatro tempdb arquivos e um arquivo de log. Use os seguintes comandos para mover esses arquivos para o novo local:

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 mover os arquivos, interrompa e reinicie o contêiner usando os comandos a seguir

docker stop sql1
docker start sql1

Implantar contêineres com todos os dados e arquivos de log em tmpfs

Aviso

Essa configuração não tem suporte, mas pode ser usada para fins de desenvolvimento. Você pode fornecer comentários para 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