Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: 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.
| Конфигурация | Description |
|---|---|
| Поддерживаемая конфигурация |
tmpfs идеально подходит для хранения непрекращающихся данных, которые не нужно сохранять во время перезапуска. В настоящее время только tempdb файлы базы данных поддерживаются в файловой системе tmpfs как для развертываний на основе контейнеров, так и для неконтейнерных развертываний. |
| Неподдерживаемая конфигурация | Файловая система tmpfs может использоваться для пользовательских баз данных в развертываниях контейнеров SQL, но только для целей разработки. Однако эта конфигурация не поддерживается. Вы можете предоставить отзыв по этому сценарию на сайте GitHub. |
Развертывания физических или виртуальных машин
Чтобы включить поддержку tmpfs для SQL Server в Linux на физических или виртуальных машинах, необходимо правильно подключить файловую систему tmpfs , для которой требуется доступ к sudo. После настройки точек подключения вы можете разместить tempdb файлы на этих подключениях и запустить SQL Server с tempdb файлами, подключенными к файловой системе tmpfs .
Включение tmpfs для tempdb
tempdbСоздайте каталог.mkdirИспользуйте команду для создания каталога дляtempdbбазы данных. Убедитесь, что он принадлежитmssqlпользователю и группе, чтобы разрешить доступ к SQL Server:sudo mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbПодключите файловую систему 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Обновите расположение файла
tempdb.Убедитесь, что SQL Server запущен и работает. Подключитесь к своему SQL Server инстансу с помощью SQL Server Management Studio (SSMS) и выполните следующие команды Transact-SQL (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');Перезапустите SQL Server, чтобы применить изменения.
sudo systemctl restart mssql-serverПроверьте
tempdbместоположение файлов.Когда SQL Server заработает, проверьте, что
tempdbданные и файлы журналов теперь находятся в новой директории, подключившись к SQL Server с помощью инструмента вроде SSMS.SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;
Теперь вы увидите все файлы базы данных tempdb на новой точке монтирования /var/opt/mssql/tempdb.
Горячее изменение размера точки монтирования tmpfs в режиме онлайн
Вы также можете изменить размер монтирования tmpfs, если tempdb заполнен. Чтобы выполнить горячее изменение размера, запустите следующую команду для изменения размера монтирования tmpfs до 6 ГБ:
sudo 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