Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: 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