Поделиться через


Включение и запуск tempdb в tmpfs для SQL Server 2025 в Linux

Применимо к: SQL Server 2025 (17.x) в Linux

В этой статье описано, как включить и запустить tempdb файлы базы данных в файловой системе tmpfs в SQL Server 2025 (17.x).

SQL Server в Linux и контейнерах традиционно поддерживают XFS и файловые системы ext4 для развертывания файлов и журналов базы данных SQL Server. Однако для временных баз данных, таких как tempdb, которые не требуют сохранения данных из одного сеанса работы в другой, использование файловой системы tmpfs, использующей память (ОЗУ), может повысить общую производительность tempdb-основных рабочих нагрузок.

Дополнительные сведения о файловой системе tmpfs см. в документации по ядрам Linux.

Конфигурация Описание
Поддерживаемая конфигурация tmpfs идеально подходит для хранения непрекращающихся данных, которые не нужно сохранять во время перезапуска. В настоящее время только tempdb файлы базы данных поддерживаются в файловой системе tmpfs как для развертываний на основе контейнеров, так и для неконтейнерных развертываний.
Неподдерживаемая конфигурация Файловая система tmpfs может использоваться для пользовательских баз данных в развертываниях контейнеров SQL, но только для целей разработки. Однако эта конфигурация не поддерживается. Вы можете предоставить отзыв по этому сценарию на сайте GitHub.

Развертывания физических или виртуальных машин

Чтобы включить поддержку tmpfs для SQL Server в Linux на физических или виртуальных машинах, необходимо правильно подключить файловую систему tmpfs , для которой требуется доступ к sudo. После настройки точек подключения вы можете разместить tempdb файлы на этих подключениях и запустить SQL Server с tempdb файлами, подключенными к файловой системе tmpfs .

Включение tmpfs для tempdb

  1. tempdb Создайте каталог.

    mkdir Используйте команду для создания каталога для tempdb базы данных. Убедитесь, что он принадлежит mssql пользователю и группе, чтобы разрешить доступ к SQL Server:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Подключите файловую систему tmpfs.

    Чтобы подключить файловую систему tmpfs , используйте следующую команду:

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

    Параметр -t указывает тип файловой системы, которая в данном случае является tmpfs.

    Этот -o параметр позволяет указать параметры подключения. size=4G Здесь устанавливается максимальный размер tmpfs в 4 ГБ, то есть он может использовать до 4 ГБ ОЗУ.

    Эта команда подключает tmpfs к целевому каталогу, используемому базой данных SQL Server tempdb .

    При необходимости добавьте его в fstab обслуживание подключений между перезапусками:

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Обновите расположение файла tempdb.

    Убедитесь, что SQL Server запущен и работает. Подключитесь к экземпляру SQL Server с помощью SQL Server Management Studio (SSMS) и выполните следующие команды T-SQL.

    Определите все файлы tempdb с помощью этого скрипта T-SQL, а затем выполните команду ALTER DATABASE, чтобы обновить расположение местонахождения файла tempdb.

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

    Основываясь на количестве файлов, которые вы видите для tempdb, создайте команды ALTER DATABASE следующим образом:

    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. Перезапустите SQL Server, чтобы применить изменения.

    sudo systemctl restart mssql-server
    
  5. Проверьте tempdb расположение файлов.

    После запуска SQL Server, убедитесь, что файлы данных и журналов tempdb теперь находятся в новом каталоге, подключившись к SQL Server с помощью такого средства, как SQL Server Management Studio (SSMS).

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

Теперь вы увидите все файлы базы данных tempdb на новой точке монтирования /var/opt/mssql/tempdb.

Горячее изменение размера точки монтирования tmpfs в режиме онлайн

Вы также можете изменить размер монтирования tmpfs, если tempdb заполнен. Чтобы выполнить горячее изменение размера, запустите следующую команду для изменения размера монтирования tmpfs до 6 ГБ:

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

При необходимости, чтобы новый размер сохранялся при перезапусках, измените 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

Развертывания контейнеров

Для рабочих нагрузок разработчика tmpfs можно использовать для пользовательских баз данных. Файловые системы tmpfs могут значительно ускорить тестовые случаи для пользовательских баз данных, развернутых в контейнерах. Так как tmpfs использует ОЗУ вместо дискового хранилища, он позволяет быстро выполнять операции чтения и записи. Эта конфигурация полезна в средах разработки и тестирования, где необходимы быстрые итерации.

Однако tmpfs для пользовательских баз данных не поддерживается. Вы можете предоставить отзывы, связанные с пользовательскими базами данных на tmpfs на GitHub.

Размещайте только базы данных tempdb в файловой системе tmpfs.

Если вы развертываете контейнер SQL Server и хотите убедиться, что контейнер использует tmpfs для этого tempdb, можно выполнить следующую команду:

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

Команда --tmpfs задает размер до 4 ГБ, а uid (идентификатор пользователя) и gid (идентификатор группы) устанавливаются на 10001, чтобы убедиться, что разрешения настроены правильно для tempdb создания файлов.

После запуска контейнера подключитесь к SQL Server с помощью SSMS и переместите tempdb файлы в новое расположение /var/opt/mssql/tempdb со следующими командами T-SQL:

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

В зависимости от количества отображаемых файлов измените следующую команду. В этом примере есть четыре tempdb файла и один файл журнала. Используйте следующие команды, чтобы переместить эти файлы в новое расположение:

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

После перемещения файлов остановите и перезапустите контейнер с помощью следующих команд.

docker stop sql1
docker start sql1

Разверните контейнеры с размещением всех данных и журналов в tmpfs.

Предупреждение

Эта конфигурация не поддерживается, но может использоваться для целей разработки. Вы можете предоставить отзыв по этому сценарию на сайте 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