다음을 통해 공유


SQL Server에서 잘못 정렬된 I/O 섹터 크기 오류로 인한 성능 저하

적용 대상: SQL Server

이 문서에서는 실제 섹터 크기가 디스크 드라이브 간에 다를 때 SQL Server에서 잘못 정렬된 I/O 작업으로 인해 성능 저하를 해결하는 방법을 소개합니다.

개요

디스크 드라이브의 물리적 섹터 크기가 서버 또는 스토리지 시스템 간에 다를 때 SQL Server에서 잘못된 정렬된 I/O 작업이 발생할 수 있습니다. 이 조건은 성능을 저하시킬 수 있으며 다음과 같이 섹터 크기 불일치가 분명한 환경에서 특히 일반적입니다.

  • 연결된 스토리지가 있는 가상 머신
  • Always On 가용성 그룹
  • 로그 전달
  • 하드웨어 마이그레이션

예를 들어 주 서버에서 4KB 섹터 크기를 사용하는 반면 보조 서버는 512바이트를 사용하는 경우 일반적인 문제가 발생합니다. 이 문제로 인해 로그 동기화 또는 복원 프로세스 중에 I/O 작업이 잘못 정렬됩니다. 이 정렬이 잘못되면 복원 속도가 느리거나 동기화 지연과 같은 성능이 저하될 수 있습니다.

추적 플래그 1800 을 통해 SQL Server는 기본 디스크의 실제 섹터 크기에 관계없이 트랜잭션 로그 I/O 작업에 일관된 4KB 섹터 크기를 사용합니다. 이 추적 플래그는 서버가 다른 스토리지 사양을 사용하여 하드웨어로 업그레이드되거나 마이그레이션되었을 수 있는 혼합 환경에서 성능을 유지하도록 설계되었습니다.

쓰기 집약적 워크로드가 있는 데이터베이스의 경우 I/O 작업을 정렬하면 성능이 크게 향상되는 반면 읽기 집약적 환경에서는 이점이 미미할 수 있습니다.

증상

다음 증상이 발생할 경우 잘못 정렬된 I/O 작업으로 인해 SQL Server에서 성능이 저하될 수 있습니다.

  • 느린 동기화 또는 복원 시간: 잘못 정렬된 I/O 작업으로 인해 특히 Always On 가용성 그룹 또는 로그 전달과 같은 분산 SQL Server 환경에서 동기화 또는 복원 시간이 느려질 수 있습니다.

  • SQL Server 오류 로그의 오류 메시지: I/O 작업과 관련된 오류 메시지는 다음과 같은 잘못된 정렬 문제를 나타낼 수 있습니다.

    There have been # misaligned log IOs which required falling back to synchronous IO.

  • 쓰기 집약적인 작업 중 성능 병목 상태: 로그 백업 또는 데이터베이스 복원과 같은 쓰기 집약적인 작업은 잘못된 정렬된 I/O 작업으로 인해 디스크 대기 시간이 높고 I/O 대기 시간이 증가하여 성능 병목 현상과 응답 시간이 느려질 수 있습니다.

섹터 크기 확인

잘못 정렬된 I/O 작업을 방지하려면 디스크 드라이브의 실제 섹터 크기가 모든 서버 및 스토리지 시스템에서 일관되도록 하는 것이 중요합니다.

관리자 권한 명령 프롬프트에서 다음 명령을 실행하여 섹터 크기를 확인할 수 있습니다.

fsutil fsinfo sectorinfo <volume path name>

다음 스크린샷은 섹터 크기가 8KB이지만 실제 섹터 크기가 4KB인 드라이브에 대한 fsutil fsinfo sectorinfo 명령의 출력 E: 을 보여 줍니다. 이로 인해 잘못 정렬된 I/O 작업이 발생합니다.

8KB 섹터 크기의 명령 프롬프트 출력 스크린샷

해결 방법

잘못 정렬된 I/O 작업으로 인해 성능이 저하되고 섹터 크기를 수정할 수 없는 경우 추적 플래그 1800을 전역 시작 매개 변수로 사용하여 SQL Server가 트랜잭션 로그 I/O 작업에 일관된 4KB 섹터 크기를 사용하도록 강제할 수 있습니다.

추적 플래그 1800을 시작 매개 변수로 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. SQL Server가 설치되어 있고 물리적 섹터 크기가 일치하지 않는 시스템에서 SQL Server 구성 관리자를 엽니다.

  2. SQL Server 구성 관리자(로컬)를 확장하고 SQL Server 서비스를 선택합니다.

  3. 구성하려는 SQL Server 인스턴스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    속성이 강조 표시된 SQL Server 서비스 마우스 오른쪽 단추 클릭 메뉴의 스크린샷

  4. SQL Server 속성에서 -T1800합니다.

    SQL Server 속성에서 추적 플래그를 시작 매개 변수로 추가하는 스크린샷

  5. 추적 플래그가 시작 매개 변수 목록에 추가되었는지 확인합니다. 확인을 선택하여 변경 내용을 저장합니다.

    시작 매개 변수가 강조 표시된 SQL Server 속성 창의 스크린샷

  6. 인스턴스가 시작될 때 추적 플래그를 사용하도록 설정하려면 SQL Server 서비스를 다시 시작합니다.

비고

성능에 부정적인 영향을 주지 않고 4KB 섹터 크기의 시스템에서도 추적 플래그 1800을 사용하도록 설정할 수 있습니다.

참조

KB3009974 - 수정: 디스크의 섹터 크기가 다르면 동기화 속도가 느려집니다.