확장성을 위한 SQL Server 2022의 향상된 기능

완료됨

이제 확장성과 SQL Server 2022의 새로운 기능이 워크로드의 성능을 크게 개선하는 데 어떻게 도움이 되는지 살펴보겠습니다. SQL Server 2022로 업그레이드하면 확장성을 위해 추가된 기본 구성 및 기능을 사용하는 것만으로도 상당한 개선을 경험할 수 있습니다.

이 단원에서는 다음을 살펴보겠습니다.

  • 버퍼 풀 병렬 검사
  • 시스템 페이지 래치 동시성 향상

버퍼 풀 병렬 검사

SQL Server 2022에 도입된 버퍼 풀 병렬 검사는 고객이 SQL Server 환경을 확장할 때 도움이 되는 버퍼 풀 검사 작업의 성능을 향상시키는 기능입니다. 데이터베이스 시작 또는 종료, 새 데이터베이스 만들기, 파일 삭제 작업, 백업 또는 복원 작업, Always On 장애 조치(failover) 이벤트, DBCC CHECKDB 및 DBCC Check Table, 로그 복원 작업 및 기타 내부 작업과 같은 일반적인 작업에서는 모두 버퍼 풀 병렬 스캔을 이용합니다.

버퍼 풀이란 무엇이며 성능에 영향을 주는 이유는 무엇인가요?

버퍼는 메모리에 있는 8KB 페이지이며 버퍼 풀(버퍼 캐시라고도 함)은 8KB 페이지로 나뉩니다. 버퍼 풀은 SQL Server가 디스크에서 읽은 데이터 페이지를 저장하는 메모리 영역이며, 먼저 모든 페이지를 버퍼 풀에 복사해야 쿼리에서 사용할 수 있습니다. 1TB 버퍼 공간이 있다고 상상해 보십시오. 1TB를 사용하면 버퍼 풀 검사가 1억 3천만 개 이상의 버퍼를 반복해야 합니다.

SQL Server 2019 이전에는 버퍼 풀 검사가 항상 직렬 작업이었습니다. 즉, 컴퓨터의 환경이나 메모리가 클수록 모든 버퍼를 직렬로 반복해야 하므로 버퍼 풀을 검사하는 데 더 큰 성능 효과가 나타납니다. 이 문제를 없앨 방법이 없었으며, 문제가 수행 중인 작업의 규모와 반드시 관련이 있는 것은 아니었습니다. 더 큰 시스템에서는 버퍼 풀을 검사하는 데 더 오래 걸리기 때문에 새 데이터베이스를 만들거나 SQL Server를 종료할 때도 더 작은 시스템에 비해 성능상 차이가 나타납니다.

버퍼 풀 병렬 검사를 사용하여 크기 조정 해결

버퍼 풀 병렬 검사를 사용하면 버퍼 풀 검사를 병렬화할 수 있으며 검사가 더 빠르게 완료될 수 있습니다. 이는 환경의 크기를 조정할 때 성능에 미치는 영향을 확인할 수 있으므로 대용량 메모리 컴퓨터에 중요한 개선 사항입니다. 고객은 버퍼 풀 병렬 검사가 기본적으로 사용하도록 설정된 SQL Server 2022를 사용하는 것만으로 버퍼 풀을 검사하는 작업에서 10~30배 개선을 체감할 수 있습니다.

시스템 페이지 래치 동시성 향상

SQL Server 이전 버전과 마찬가지로 SQL Server 2022에서는 tempdb 성능이 추가로 향상되었으며 이번에는 다음을 처리합니다.

  • GAM(동시 전역 할당 맵) 업데이트
  • SGAM(동시 공유 전역 할당 맵) 업데이트

tempdb의 성능 문제

SQL Server 환경의 크기 조정과 관련된 가장 큰 성능 문제 중 하나는 tempdb입니다. tempdb는 전역 또는 로컬 임시 테이블, 임시 저장 프로시저, 테이블 변수, 테이블 반환 함수 및 커서와 같은 임시 개체를 저장하는 데 사용되는 시스템 데이터베이스입니다. tempdb는 행 버전 관리, 온라인 인덱스 작업, 스냅샷 및 트리거에도 사용됩니다. tempdb는 거의 모든 SQL Server 워크로드에 사용되는 공유 리소스이며 SQL Server 인스턴스의 모든 세션에서는 하나의 tempdb 데이터베이스를 사용합니다.

Diagram of the operations stored in the tempdb database.

또 다른 tempdb 용도는 프로세스에 사용할 수 있는 메모리가 부족하거나 SQL Server에서 tempdb로 유출되는 부정확한 추정치가 있는 경우 내부적으로 디스크로 유출하는 것입니다. 더 큰 시스템에 더 큰 워크로드를 사용하기 시작하면서 다음과 같은 세 가지 주요 영역의 tempdb 공간에서 동시성 문제가 발생하기 시작했습니다.

경합 유형 및 경합이 발생하는 이유에 대한 자세한 내용은 위의 링크를 살펴보십시오.

동시 GAM 및 SGAM 업데이트를 통한 크기 조정 문제 해결

대규모 SQL Server 환경을 관리하는 경우 더 높은 동시 워크로드와 관련된 문제가 발생할 가능성이 있었으며, 가능한 원인 중 하나는 tempdb 경합이었습니다. 수십 년 동안 GAM 및 SGAM에 대한 경합을 비롯해 경합을 완화하기 위해 tempdb에 대한 데이터 파일을 여러 개 갖는 모범 사례를 권장해 왔습니다. 높은 워크로드와 관련된 SQL Server 성능 문제를 발견했지만 시스템에서 CPU를 제대로 활용하지 못했을 수 있으며 자세한 내용은 PAGELATCH 대기tempdb 문제 해결 가이드를 읽어 보시기 바랍니다.

SQL Server 2022를 통해 스케일링 개선을 계속하면서 애플리케이션 변경이나 구성 없이 tempdb로 성능 병목 상태를 해결할 수 있는 동시 GAM 및 SGAM 업데이트를 도입했습니다. 이러한 개선은 거의 모든 tempdb 경합을 없애고 병렬 스레드가 GAM 및 SGAM 페이지를 수정할 수 있도록 합니다. 이러한 모든 향상된 기능을 통해 사용자는 SQL Server 2022 설정의 기본값을 사용하여 tempdb 파일을 구성할 수 있어야 하며 더 이상 tempdb 시스템 페이지 래치 경합을 위해 다른 튜닝을 수행할 필요가 없습니다. 이렇게 하면 tempdb를 관리하는 핸즈프리 접근 방식을 사용할 수 있습니다.

SQL Server 2022에 도입된 스케일링 개선 사항의 성능 데모를 보려면 다음 비디오를 확인해 보십시오.

SQL Server 2022(16.x)의 새로운 기능 - 성능에서 확장성 및 성능 향상에 대해 자세히 알아보십시오.

지식 점검 - 가장 적합한 답변 선택

1.

SQL Server 2022에서는 tempdb에 대해 어떤 유형의 병목 현상이 제거됩니까?