다음을 통해 공유


Azure VM의 SQL Server에 대한 임시 스토리지에 tempdb 배치

적용 대상:SQL Server on Azure VM

이 문서에서는 시스템 데이터베이스를 로컬 SSD 드라이브로 이동 tempdb 하거나 로컬 SSD 드라이브를 사용하여 버퍼 풀을 확장하는 등 일부 Azure VM에서 사용할 수 있는 로컬 SSD 임시 스토리지를 활용하여 Azure VM(Virtual Machines)의 SQL Server에서 워크로드 성능을 향상시키는 방법을 알아봅니다.

개요

특정 Azure VM(Virtual Machines)에 연결된 로컬 SSD 드라이브는 호스트 컴퓨터에 물리적으로 연결된 고성능 디스크인 최적화된 임시 스토리지를 제공합니다. 이 임시 스토리지는 VM이 할당 취소되거나 이동될 때마다 다시 만들어집니다(예: 유지 관리 또는 크기 조정 중). SQL Server 시스템 데이터베이스를 임시 스토리지에 배치하면 SQL Server tempdb 가 다시 시작될 때마다 데이터베이스가 다시 만들어지므로 위험이 없습니다.

최적화된 짧은 대기 시간과 높은 IOPS로 인해 다음을 비롯한 임시 개체를 많이 사용하는 워크로드의 성능을 크게 높일 수 있으므로 임시 드라이브에 배치 tempdb 하는 것이 좋습니다.

  • 큰 레코드 집합을 처리하는 쿼리
  • 인덱스 만들기 및 유지 관리
  • 행 버전 관리 격리 수준
  • 임시 테이블
  • 유발 요소

그러나 로컬 SSD 드라이브는 비영구적이므로 VM이 중지, 할당 취소 또는 새 호스트로 재배치될 때마다 해당 콘텐츠 및 사용 권한이 손실됩니다. 이렇게 하려면 다음 사항을 고려하여 신중하게 계획해야 합니다.

  • 다시 시작할 때 재구성: tempdb VM이 다시 시작될 때마다 임시 디스크(일반적으로 D:)를 사용하도록 다시 구성해야 합니다. Azure Marketplace의 Azure VM 이미지에 대한 SQL Server의 경우 이 프로세스는 SQL IaaS 에이전트 확장으로 자동화되며, VM이 시작될 때 폴더를 만들고 권한을 자동으로 처리하여 관리를 간소화합니다. 그러나 SQL Server를 수동으로 설치한 경우 VM이 다시 시작될 때마다 임시 디스크를 수동으로 사용하도록 구성 tempdb 해야 합니다. 이 프로세스는 PowerShell 및 작업 스케줄러와 같이 자동화 할 수 있습니다.
  • 전용 사용: tempdb 로컬 SSD 드라이브에 저장된 유일한 데이터여야 합니다. VM이 다시 시작되거나 할당이 취소될 때마다 손실되므로 데이터 파일, 로그 파일 또는 백업과 같은 영구 데이터는 임시 스토리지에 배치해서는 안 됩니다.

필수 조건

임시 스토리지를 사용하도록 구성 tempdb 하려면 다음 필수 구성 요소가 필요합니다.

  • Azure 구독. Azure 구독이 없는 경우 무료 계정을 만드세요.
  • Azure VM에 SQL Server를 수동으로 설치합니다.
  • 초기화된 임시 디스크입니다. Azure VM에서 임시 디스크는 일반적으로 D: 드라이브로 마운트됩니다. 다른 구성이 있는 경우 그에 따라 지침을 조정합니다.

비고

이 문서에서는 Azure Marketplace에서 Azure VM 이미지에 SQL Server를 배포할 때 임시 스토리지를 사용하도록 자동으로 구성되므로 SQL Server를 수동으로 tempdb 설치했다고 가정합니다.

임시 스토리지를 사용하도록 tempdb 구성

유지 관리 기간 동안 Transact-SQL을 사용하여 임시 디스크를 사용하도록 SQL Server tempdb 를 구성할 수 있습니다. 다음을 살펴보세요.

  • 데이터베이스는 SQL Server 구성에 따라 여러 데이터 파일(예: tempb, tempdb.mdf, 및 tempdb2.md)을 가질 수 있습니다. MODIFY FILE에 대해 명령을 실행하여 tempdbD:\SQLTemp과 같은 임시 디스크를 사용하도록 다시 구성해야 합니다.
  • sys.master_files 쿼리(여기서 database_id = 2)를 쿼리하여 모든 tempdb 데이터 파일을 식별할 수 있습니다.
  1. 로컬 SSD 드라이브에 폴더를 만듭니다(예: D:\SQLTemp.).

  2. SSMS(SQL Server Management Studio)를 열고 SQL Server 인스턴스에 연결합니다.

  3. 다음 T-SQL 명령을 실행하여 임시 디스크를 사용하도록 구성 tempdb 합니다.

    USE MASTER
    GO
    
    ALTER DATABASE tempdb MODIFY FILE (NAME= tempdev, FILENAME= 'D:\SQLTemp\tempdb.mdf') -- to move data files
    GO
    
    ALTER DATABASE tempdb MODIFY FILE (name = templog, filename = 'D:\SQLTemp\templog.ldf') -- to move log files
    GO
    
  4. SQL Server 인스턴스를 다시 시작하여 변경 내용을 적용합니다.

  5. tempdb 다음 T-SQL 명령을 실행하여 임시 디스크를 사용하고 있는지 확인합니다.

    USE tempdb
    GO
    
    EXEC sp_helpfile
    GO
    
  6. 임시 디스크의 tempdb 폴더를 확인하여 D:\SQLTemp 폴더에 파일이 생성되었는지 확인합니다.

시작 시 tempdb 구성 자동화

VM을 다시 시작할 때 임시 드라이브의 콘텐츠가 손실되므로 SQL Server가 시작되기 전에 폴더가 만들어지지 않으면 tempdb SQL Server가 시작되지 않습니다. PowerShell을 사용하여 SQL Server 서비스가 시작되기 전에 폴더 만들기를 자동화할 수 있습니다.

시작 시 tempdb 구성을 자동화하려면 다음 단계를 수행합니다.

  1. 서비스 구성: SQL Server 및 SQL Server 에이전트 서비스를 모두 수동 시작으로 설정합니다. 이렇게 하면 폴더를 만들기 전에 자동으로 시작되지 않습니다.
  2. 임시 디스크에 폴더를 만들고 SQL Server 및 SQL 에이전트 서비스를 시작하는 PowerShell 스크립트를 만듭니다.
  3. Windows 예약 작업을 사용하여 시스템 시작 시 스크립트가 실행되도록 예약합니다. 계정을 사용하여 사용자가 로그온되었는지 여부를 실행하도록 태스크를 구성합니다.

다음 섹션에서는 각 단계에 대한 자세한 지침을 제공합니다.

시작 모드 구성

스크립트에서 SQL Server가 시작되기 전에 실행할 폴더를 만들려면 SQL Server 및 SQL 에이전트 서비스를 수동으로 시작하도록 설정해야 합니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. SQL Server 구성 관리자를 엽니다.

  2. 왼쪽 창에서 SQL Server 서비스를 선택합니다.

  3. SQL Server 서비스를 마우스 오른쪽 단추로 클릭하고 속성을 선택하여 속성 창을 엽니다.

  4. 속성 창에서 서비스 탭을 선택합니다.

  5. 서비스 탭에서 드롭다운 목록을 사용하여 시작 모드를 수동 모드로 변경합니다.

    시작 모드를 변경할 위치를 보여 주는 SQL Server 서비스 속성인 SQL Server 구성 관리자의 스크린샷

  6. 적용을 사용하여 변경 내용을 저장한 다음 확인을 사용하여 창을 닫습니다.

  7. SQL Server 에이전트 서비스에 대해 다음 단계를 반복합니다.

PowerShell 스크립트 만들기

다음과 같은 PowerShell 스크립트를 만듭니다.

  1. 임시 디스크에 폴더를 만듭니다.
  2. SQL Server 서비스를 시작합니다.
  3. SQL 에이전트 서비스를 시작합니다.

다음 스크립트를 복사하여 붙여넣고, 필요에 따라 수정한 다음, 다음과 같이 OS 드라이브에 PowerShell 파일로 C:\Scripts\SQLStartup.ps1저장합니다.

$SQLService="SQL Server (MSSQLSERVER)"
$SQLAgentService="SQL Server Agent (MSSQLSERVER)"
$tempfolder="D:\SQLTEMP"
if (!(test-path -path $tempfolder)) {
    New-Item -ItemType directory -Path $tempfolder
}
Start-Service $SQLService
Start-Service $SQLAgentService

비고

스크립트는 SQL Server 인스턴스가 기본 인스턴스라고 가정합니다. 명명된 인스턴스를 사용하는 경우 MSSQLSERVER을 SQL Server 인스턴스의 이름으로 바꾸십시오.

스크립트를 실행하는 예약된 작업 만들기

시작 시 PowerShell 스크립트를 실행하는 예약된 작업을 만듭니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. 시작 메뉴에서 작업 스케줄러 를 엽니다.

  2. 작업에서 기본 작업 만들기를 선택하여 작업 만들기 창을 엽니다.

  3. 기본 작업 만들기 탭에서 작업의 이름(예: SQL-startup)을 입력하고 설명을 입력합니다. 다음을 선택합니다.

  4. 트리거 탭에서 컴퓨터가 시작되는 시기를 확인하고 다음을 선택합니다.

  5. 작업 탭에서 프로그램 시작을 선택하고 다음을 선택합니다.

  6. 프로그램 시작 탭에서 N 프로그램/스크립트 상자를 입력 powershell.exe 하고 인수 추가(선택 사항) 상자에 다음과 같은 -ExecutionPolicy Bypass -File C:\Scripts\SQLStartup.ps1스크립트 경로를 입력합니다.

  7. 마침 탭에서 요약을 검토하고 마침을 선택하여 작업을 만듭니다.

    스크립트 경로를 입력할 위치를 보여 주는 작업 스케줄러의 기본 작업 만들기 창 스크린샷

스크립트 테스트

VM을 다시 시작하여 스크립트를 테스트합니다. VM이 다시 시작된 후 데이터 파일이 임시 디스크에 있고 SQL Server 및 SQL 에이전트 서비스가 실행되고 있는지 확인 tempdb 합니다.

버퍼 풀 확장 구성

Azure VM에서 로컬 SSD 드라이브를 사용하도록 버퍼 풀 확장을 구성하여 SQL Server 성능을 더욱 향상시킬 수 있습니다. 이 기능은 디스크의 파일을 사용하여 메모리 내 버퍼 풀을 확장하여 사용 가능한 RAM을 초과하는 메모리 집약적 워크로드의 I/O 처리량을 향상시킵니다. 로컬 SSD(임시 스토리지)는 짧은 대기 시간과 고성능을 제공하므로 이 확장에 이상적인 위치입니다.

버퍼 풀 확장을 구성할 때 파일의 크기를 KB(킬로바이트), 메가바이트(MB) 또는 기가바이트(GB)로 지정합니다. 권장 크기는 일반적으로 SQL Server에 대해 구성된 [max_server_memory] 설정의 4~8배이지만 Standard 버전의 경우 최대값은 이 값의 4배로 제한됩니다(Enterprise Edition은 최대 32회 허용). 예를 들어 max_server_memory 16GB로 설정된 경우 SQL Server 버전 및 워크로드 요구 사항에 맞게 조정된 64-128GB의 버퍼 풀 확장 크기를 목표로 합니다.

지정된 경로가 임시 드라이브(예: D:\SQLTEMP\)에 있다고 가정하여 버퍼 풀 확장을 사용하도록 설정하려면 인스턴스에 연결한 후 SSMS(SQL Server Management Studio)에서 다음 T-SQL 명령을 실행합니다.

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
( FILENAME = 'D:\SQLTEMP\ExtensionFile.BPE' , SIZE = <size> [ KB | MB | GB ] )