다음을 통해 공유


Sql Server 2025 Preview on Linux용 tmpfs에서 tempdb 사용 및 실행

적용 대상: SQL Server 2025(17.x) 미리 보기 - Linux

이 문서에서는 SQL Server 2025(17.x) 미리 보기의 tempdb 파일 시스템에 데이터베이스 파일을 사용하도록 설정하고 실행하는 방법을 안내합니다.

SQL Server on Linux 및 컨테이너는 일반적으로 SQL Server 데이터베이스 파일 및 로그를 배포하기 위한 XFSext4 파일 시스템을 지원합니다. 그러나 한 가동 시간에서 다른 가동 시간으로 데이터를 저장할 필요가 없는 임시 tempdb데이터베이스의 경우 메모리(RAM)를 활용하는 tmpfs 파일 시스템을 사용하면 기반 워크로드의 tempdb전반적인 성능을 향상시킬 수 있습니다.

tmpfs 파일 시스템에 대한 자세한 내용은 tmpfs - Linux 커널 설명서를 참조하세요.

구성 / 설정 설명
지원되는 구성 tmpfs 는 다시 시작할 때 저장할 필요가 없는 비영구 데이터를 저장하는 데 적합합니다. 현재 데이터베이스 파일만 tempdb 컨테이너 및 비 컨테이너 기반 배포에 대해 tmpfs 파일 시스템에 지원됩니다.
지원되지 않는 구성 tmpfs 파일 시스템은 SQL 컨테이너 배포의 사용자 데이터베이스에만 사용할 수 있지만 개발 목적으로만 사용할 수 있습니다. 그러나 이 구성은 지원되지 않습니다. GitHub에서 이 시나리오에 대한 피드백을 제공할 수 있습니다.

물리적 또는 가상 머신 배포

물리적 또는 가상 머신에서 Sql Server on Linux에 대한 tmpfs 지원을 사용하도록 설정하려면 tmpfs 파일 시스템을 올바르게 탑재해야 합니다. 이 경우 sudo 액세스가 필요합니다. 탑재 지점이 설정되면 tempdb 파일을 이러한 탑재 지점에 배치하고, tempdb 파일 시스템에 파일을 탑재한 상태에서 SQL Server를 시작할 수 있습니다.

"tempdb 대한 tmpfs 사용을 활성화하십시오."

  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의 최대 크기를 4GB로 설정합니다. 즉, 최대 4GB의 RAM을 사용할 수 있습니다.

    이 명령은 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가 실행 중인지 확인합니다. SSMS(SQL Server Management Studio)를 사용하여 다음 T-SQL 명령을 실행하여 SQL Server 인스턴스에 연결합니다.

    다음 T-SQL 스크립트를 사용하여 모든 tempdb 파일을 식별한 다음, 명령을 실행 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가 실행되고 나면 SSMS(SQL Server Management Studio)와 같은 도구를 사용하여 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로 조정합니다.

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 는 지원 되지 않습니다 . GitHubtmpfs에서 사용자 데이터베이스와 관련된 피드백을 제공할 수 있습니다.

오직 tempdb 데이터베이스만 tmpfs 파일 시스템에 호스트하십시오.

SQL Server 컨테이너를 배포하고 컨테이너가 tmpfstempdb사용하도록 하려면 다음 명령을 실행할 수 있습니다.

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 명령은 파일 생성에 필요한 권한이 올바르게 uid 설정되도록 크기를 4GB 및 gid (사용자 ID) 및 10001 (그룹 ID)tempdb로 설정합니다.

컨테이너가 실행되고 나면 SSMS를 사용하여 SQL Server에 연결하고 다음 T-SQL 명령을 사용하여 파일을 새 위치 tempdb 로 이동합니다/var/opt/mssql/tempdb.

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

표시되는 파일 수에 따라 다음 명령을 수정합니다. 이 예제에는 4개의 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