Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: 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
tempdbСоздайте каталог.mkdirИспользуйте команду для создания каталога дляtempdbбазы данных. Убедитесь, что он принадлежитmssqlпользователю и группе, чтобы разрешить доступ к SQL Server: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) и выполните следующие команды 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 с помощью такого средства, как 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