데이터베이스 인스턴트 파일 초기화

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 문서에서는 IFI(인스턴트 파일 초기화)와 SQL Server 데이터베이스 파일의 증가 속도를 높일 수 있는 방법에 대해 알아봅니다.

기본적으로 데이터 및 로그 파일은 이전에 삭제된 파일에서 디스크에 남아 있는 기존 데이터를 덮어쓰도록 초기화됩니다. 데이터 및 로그 파일은 다음 작업을 수행할 때 파일을 0으로 채우면 먼저 초기화됩니다(0으로 채우기).

  • 데이터베이스 만들기
  • 기존 데이터베이스에 데이터 또는 로그 파일을 추가합니다.
  • 기존 파일의 크기(자동 증가 작업 포함)를 늘입니다.
  • 데이터베이스 또는 파일 그룹을 복원합니다.

SQL Server에서 인스턴트 파일 초기화를 사용하면 해당 공간을 0으로 채우지 않고 사용된 디스크 공간을 회수하므로 이전에 멘션 파일 작업을 더 빠르게 실행할 수 있습니다. 대신, 새 데이터를 파일에 기록할 때 디스크 내용을 덮어씁니다.

Azure SQL Database 및 Azure SQL Managed Instance에서 즉시 파일 초기화는 트랜잭션 로그 파일에만 사용할 수 있습니다.

인스턴트 파일 초기화 및 트랜잭션 로그

적용 대상: SQL Server 2022(16.x) 이상 버전, Azure SQL Database 및 Azure SQL Managed Instance.

지금까지 트랜잭션 로그 파일을 즉시 초기화할 수 없었습니다. 그러나 SQL Server 2022(16.x)(모든 버전)부터 Azure SQL Database 및 Azure SQL Managed Instance에서 최대 64MB의 트랜잭션 로그 자동 증가 이벤트를 즉시 파일 초기화의 이점을 얻을 수 있습니다. 새 데이터베이스의 기본 자동 증가 크기 증분은 64MB입니다. 64MB보다 큰 트랜잭션 로그 파일 자동 증가 이벤트는 인스턴트 파일 초기화의 이점을 누릴 수 없습니다.

트랜잭션 로그 파일이 확장되는 방식과 트랜잭션 로그가 직렬 방식으로 기록된다는 사실 때문에 TDE(투명한 데이터 암호화)를 사용하도록 설정된 데이터베이스에서 트랜잭션 로그를 즉시 초기화할 수 있습니다.

  • 인스턴트 파일 초기화는 트랜잭션 로그 파일의 증가에 도움이 되도록 Azure SQL Database 및 Azure SQL Managed Instance의 범용 및 중요 비즈니스용 계층에만 사용됩니다.
  • 즉시 파일 초기화는 Azure SQL Database 및 Azure SQL Managed Instance에서 구성할 수 없습니다.

인스턴트 파일 초기화 사용

데이터 파일의 인스턴트 파일 초기화는 SQL Server 서비스 시작 계정이 부여된 SE_MANAGE_VOLUME_NAME경우에만 사용할 수 있습니다. Windows 관리istrator 그룹의 구성원은 이 권한을 가지며 볼륨 유지 관리 작업 수행 보안 정책에 추가하여 다른 사용자에게 부여할 수 있습니다. SE_MANAGE_VOLUME_NAME SQL Server 2022(16.x) 릴리스와 함께 도입된 트랜잭션 로그에서 최대 64MB의 증가 이벤트를 즉시 파일로 초기화하는 데는 권한이 필요하지 않습니다.

Important

TDE(투명한 데이터 암호화)와 같은 일부 기능을 사용하면 즉시 파일 초기화를 방지할 수 있습니다. SQL Server 2022(16.x)부터 Azure SQL Database 및 Azure SQL Managed Instance에서 트랜잭션 로그에서 IFI가 허용됩니다. 자세한 내용은 인스턴트 파일 초기화 및 트랜잭션 로그를 참조하세요.

참고 항목

SQL Server 2016(13.x)부터 설치 시 설치 시 서비스 계정에 이 권한을 부여할 수 있습니다.

명령 프롬프트 설치를 사용하는 경우 인수를 추가하거나 설치 마법사에서 /SQLSVCINSTANTFILEINIT SQL Server 데이터베이스 엔진 Service볼륨 유지 관리 작업 권한 부여 상자를 검사.

계정에 권한을 부여하려면 다음을 Perform volume maintenance tasks 수행합니다.

  1. 데이터 파일을 생성할 컴퓨터에서 로컬 보안 정책 애플리케이션(secpol.msc)을 엽니다.

  2. 왼쪽 창에서 로컬 정책을 확장한 다음 사용자 권한 할당을 선택합니다.

  3. 오른쪽 창에서 볼륨 기본 테넌트 작업 수행을 두 번 클릭합니다.

  4. 사용자 또는 그룹 추가를 선택하고 SQL Server 서비스를 실행하는 계정을 추가합니다.

  5. 적용을 선택한 다음 모든 로컬 보안 정책 대화 상자를 닫습니다.

  6. SQL Server 서비스를 다시 시작합니다.

  7. 시작할 때 SQL Server 오류 로그를 확인합니다.

    적용 대상: SQL Server(SQL Server 2012(11.x) SP4, SQL Server 2014(12.x) SP2 및 SQL Server 2016(13.x) 이상부터).

    1. SQL Server 서비스 시작 계정이 부여되면 SE_MANAGE_VOLUME_NAME다음 예제와 유사한 정보 메시지가 기록됩니다.

      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    2. SQL Server 서비스 시작 계정이 부여SE_MANAGE_VOLUME_NAME되지 않은 경우 다음 예제와 유사한 정보 메시지가 기록됩니다.

      Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

    참고 항목

    SQL Server에서 sys.dm_server_services 동적 관리 뷰의 instant_file_initialization_enabled값을 사용하여 인스턴스에 대해 인스턴트 파일 초기화가 사용되는지 확인합니다.

보안 고려 사항

이점은 보안 위험보다 클 수 있으므로 즉시 파일 초기화를 사용하도록 설정하는 것이 좋습니다.

인스턴트 파일 초기화를 사용하는 경우 삭제된 디스크 콘텐츠는 새 데이터가 파일에 기록될 때만 덮어씁니다. 이러한 이유로 일부 다른 데이터가 데이터 파일의 특정 영역에 기록될 때까지 권한 없는 보안 주체가 삭제된 콘텐츠에 액세스할 수 있습니다.

데이터베이스 파일이 SQL Server 인스턴스에 연결되어 있는 동안 이 정보 공개 위험은 파일의 DACL(임의 액세스 제어 목록)에 의해 감소됩니다. 이 DACL은 SQL Server 서비스 계정 및 로컬 관리자에 대한 파일 액세스만 허용합니다. 그러나 파일이 분리되면 파일이 없는 SE_MANAGE_VOLUME_NAME사용자 또는 서비스에서 액세스할 수 있습니다.

다음과 같은 경우에도 비슷한 고려 사항이 있습니다.

  • 데이터베이스가 백업됩니다. 백업 파일이 적절한 DACL로 보호되지 않으면 권한이 없는 사용자 또는 서비스에서 삭제된 콘텐츠를 사용할 수 있습니다.

  • 파일은 IFI를 사용하여 증가합니다. SQL Server 관리자는 잠재적으로 원시 페이지 콘텐츠에 액세스하고 이전에 삭제된 콘텐츠를 볼 수 있습니다.

  • 데이터베이스 파일은 스토리지 영역 네트워크에서 호스트됩니다. 스토리지 영역 네트워크는 항상 새 페이지를 미리 초기화됨으로 표시하고 운영 체제에서 페이지를 다시 초기화하면 불필요한 오버헤드가 발생할 수 있습니다.

삭제된 콘텐츠를 공개할 가능성이 우려되는 경우 다음 작업 중 하나 또는 둘 다를 수행해야 합니다.

  • 항상 분리된 데이터 파일 및 백업 파일에 제한적인 DACL이 있는지 확인합니다.

  • SQL Server 인스턴스에 대한 인스턴트 파일 초기화를 사용하지 않도록 설정합니다. 이렇게 하려면 SQL Server 서비스 시작 계정에서 해지 SE_MANAGE_VOLUME_NAME 합니다.

    참고 항목

    사용하지 않도록 설정하면 데이터 파일에 대한 할당 시간이 늘어나고 사용자 권한이 취소된 후에 생성되거나 크기가 증가한 파일에만 영향을 줍니다.

사용자 권한 SE_MANAGE_VOLUME_NAME

사용자 권한은 SE_MANAGE_VOLUME_NAME Windows 관리Istrative Tools, Local Security Policy 애플릿에서 할당할 수 있습니다. 로컬 정책에서 사용자 권한 할당을 선택하고 볼륨 기본 테넌트 작업 수행 속성을 수정 합니다.

성능 고려 사항

데이터베이스 파일 초기화 프로세스는 초기화 중인 파일의 새 영역에 0을 씁니다. 이 프로세스의 기간은 초기화된 파일 부분의 크기와 스토리지 시스템의 응답 시간 및 용량에 따라 달라집니다. 초기화에 시간이 오래 걸리는 경우 SQL Server 오류 로그 및 애플리케이션 로그에 기록된 다음 메시지가 표시될 수 있습니다.

Msg 5144
Autogrow of file '%.*ls' in database '%.*ls' was cancelled by user or timed out after %d milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Msg 5145
Autogrow of file '%.*ls' in database '%.*ls' took %d milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.

데이터베이스 및/또는 트랜잭션 로그 파일의 자동 증가가 길면 쿼리 성능 문제가 발생할 수 있습니다. 이는 파일 증가 작업의 기간 동안 파일의 자동 증가가 필요한 작업이 잠금 또는 래치와 같은 리소스를 유지하기 때문입니다. 할당 페이지에 대한 래치에서 긴 대기가 표시될 수 있습니다. 긴 자동 증가가 필요한 작업에는 대기 유형 PREEMPTIVE_OS_WRITEFILEGATHER이 표시됩니다.