적용 대상: Linux의 SQL Server 2025(17.x)
이 문서에서는 SQL Server 2025(17.x)의 tempdb 파일 시스템에 데이터베이스 파일을 사용하도록 설정하고 실행하는 방법을 안내합니다.
SQL Server on Linux 및 컨테이너는 일반적으로 SQL Server 데이터베이스 파일 및 로그를 배포하기 위한 XFS 및 ext4 파일 시스템을 지원합니다. 그러나 한 가동 시간에서 다른 가동 시간으로 데이터를 저장할 필요가 없는 임시 tempdb데이터베이스의 경우 메모리(RAM)를 활용하는 tmpfs 파일 시스템을 사용하면 기반 워크로드의 tempdb전반적인 성능을 향상시킬 수 있습니다.
tmpfs 파일 시스템에 대한 자세한 내용은 tmpfs - Linux 커널 설명서를 참조하세요.
| Configuration | Description |
|---|---|
| 지원되는 구성 |
tmpfs 는 다시 시작할 때 저장할 필요가 없는 비영구 데이터를 저장하는 데 적합합니다. 현재 데이터베이스 파일만 tempdb 컨테이너 및 비 컨테이너 기반 배포에 대해 tmpfs 파일 시스템에 지원됩니다. |
| 지원되지 않는 구성 | tmpfs 파일 시스템은 SQL 컨테이너 배포의 사용자 데이터베이스에만 사용할 수 있지만 개발 목적으로만 사용할 수 있습니다. 그러나 이 구성은 지원되지 않습니다. GitHub에서 이 시나리오에 대한 피드백을 제공할 수 있습니다. |
물리적 또는 가상 머신 배포
물리적 또는 가상 머신에서 Sql Server on Linux에 대한 tmpfs 지원을 사용하도록 설정하려면 tmpfs 파일 시스템을 올바르게 탑재해야 합니다. 이 경우 sudo 액세스가 필요합니다. 탑재 지점이 설정되면 tempdb 파일을 이러한 탑재 지점에 배치하고, tempdb 파일 시스템에 파일을 탑재한 상태에서 SQL Server를 시작할 수 있습니다.
"tempdb 대한 tmpfs 사용을 활성화하십시오."
tempdb디렉터리를 만듭니다.이
mkdir명령을 사용하여 데이터베이스에 대한 디렉터리를 만듭니다tempdb.mssql사용자 및 그룹이 소유하여 SQL Server 액세스를 허용하는지 확인합니다.sudo mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdbtmpfs 파일 시스템을 마운트하세요.
다음 명령을 사용하여 tmpfs 파일 시스템을 탑재합니다.
sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/이
-t옵션은 파일 시스템의 형식을 지정합니다. 이 경우tmpfs.이
-o옵션을 사용하면 탑재 옵션을 지정할 수 있습니다.size=4G여기서는 tmpfs의 최대 크기를 4GB로 설정합니다. 즉, 최대 4GB의 RAM을 사용할 수 있습니다.이 명령은 SQL Server 데이터베이스에서 사용하는 대상 디렉터리에
tempdb를 탑재합니다.필요에 따라
fstab에 추가하여 다시 시작할 때 마운트를 유지합니다.echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstabtempdb파일 위치를 업데이트합니다.SQL Server가 실행 중인지 확인합니다. SQL Server 인스턴스에 SQL Server Management Studio(SSMS)로 연결하고, 다음 Transact-SQL(T-SQL) 명령어를 실행하세요.
다음 T-SQL 스크립트를 사용하여 모든
tempdb파일을 식별한 다음, 명령을 실행ALTER DATABASE하여 파일 위치를 업데이트합니다tempdb.SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;표시되는
tempdb파일 수에 따라 명령을 다음과 같이 만듭니다:ALTER DATABASEALTER 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가 가동되면 SSMS 같은 도구를 사용해 SQL Server에 연결하여 데이터와 로그 파일이 새 디렉터리에 있는지 확인하세요
tempdb.SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;
이제 당신은 새로운 탑재 경로 tempdb에 있는 모든 데이터베이스 파일 /var/opt/mssql/tempdb를 볼 수 있습니다.
tmpfs 마운트의 실시간 크기 조정
가득 찬 경우에는 tmpfs 마운트를 실시간으로 크기 조정할 수도 있습니다. 핫 리사이즈하려면 다음 명령을 실행하여 tmpfs 탑재 크기를 6 GB로 조정합니다.
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는 디스크 스토리지 대신 RAM을 사용하므로 빠른 읽기/쓰기 작업을 수행할 수 있습니다. 이 구성은 빠른 반복이 필요한 개발 및 테스트 환경에서 유용합니다.
그러나 사용자 데이터베이스 에 대한 tmpfs 는 지원 되지 않습니다 . GitHub의 tmpfs에서 사용자 데이터베이스와 관련된 피드백을 제공할 수 있습니다.
tmpfs 파일 시스템에서는 tempdb 데이터베이스만 호스팅하세요
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 이 옵션은 크기를 4GB로 설정하고, uid (사용자 ID)와 gid (그룹 ID)를 로 10001 설정하여 파일 생성에 필요한 tempdb 권한이 올바르게 설정되도록 합니다.
컨테이너가 가동되고 실행되면, SSMS를 사용해 SQL Server 인스턴스에 연결하고, 다음 T-SQL 명령어로 파일 위치를 /var/opt/mssql/tempdb 업데이트 tempdb 합니다:
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에 모든 데이터 및 로그 파일을 사용하여 컨테이너 배포
Warning
이 구성은 지원되지 않지만 개발 목적으로 사용할 수 있습니다. 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