SQL Server Edition Scale Limits

Updated:

만약에…

S사에 근무하는 K씨는 회사의 클라우드 이관 방향에 따라,
기존에 사용중이던 게시판 DBMS(SQL Server 2012)를 MS AZURE 클라우드로 옮기기로 계획 중이다.
22년에 EOS되는 SQL Server 2012 버전도 이번 기회에 새롭게 출시된 2019로 올리기로 했고,
기존 CPU, MEM 모니터링 및 향후 예측을 통하여 아래와 같이 서버 사양을 확정했다.
(Azure 내에 VM에 SQL Server 설치 후, 운영한다고 가정)

CPU : 12 cores * 4 sockets = 48 cores
MEM : 128 GB
Storage : 1 TB
DBMS : SQL Server 2019 Standard Edition

6개월 후 프로젝트 막바지가 되었다.
순조롭게 프로젝트는 진행되었고, 이제 성능 테스트가 남았다.
그러나 K씨는 성능 테스트 도중 큰 문제를 발견하게 되었다.
과연 무슨 문제 였을까?

결론부터 말하자면, SQL Server 2019의 Standard Edition은 48 cores를 지원하지 않는다.
스탠다드 에디션은 CPU를 최대 24 cores 까지만 지원하기 때문이다.

이 상황은 실제로 어떤 프로젝트의 성능테스트 시 발견 되었던 사례이다.
성능테스트 시 DBMS 기능상 문제는 없었지만, 성능상 서버의 전체 CPU 중에 50%는 사용하지 못하는 상황이 발생되었던 것이다.

프로젝트 막바지인 최종 성능테스트 시에 이러한 상황이 발생하면, 정말 난감하다.

특히 Standard와 Enterprise 에디션의 가격차는 상당하기 때문에, 억 단위의 예산이 추가로 발생 할 수 있다.

<출처 : https://docs.microsoft.com/ko-kr/sql/sql-server/editions-and-components-of-sql-server-version-15?view=sql-server-ver15 >

위의 Scale limits(SQL Server 2019) 표를 보면 Standard의 경우 24 cores의 4 sockets만 지원됨을 알 수 있다.
심지어 SQL Server 2014 Standard의 경우는 16 cores 미만, 4 sockets 으로 제한 된다.

한가지 더 참고할 점은,
Azure등의 클라우드 환경에서 무심코 24 cores, 24 sockets VM을 생성한다면,
4 sockets 제한으로 인하여, 똑같은 24 cores VM에서 4 cores 만 사용하는 최악의 상황을 맞이할 수도 있다.

결 론

SQL Server 의 에디션별로 가격 차이가 많이 나기 때문에, Enterprise 기능이 꼭 필요하지 않다면 Standard를 도입하는 경우가 많다.
하지만, Standard 에디션을 도입할 경우, CPU, MEM 등의 Scale 제한이 있다는 점을 모르거나 간과하고 프로젝트 진행시 곤란한 상황이 발생할 수 있다. 이 기회를 통해 숙지 및 참고하여 같은 사례가 발생하지 않기 바란다.

참 조

아래의 쿼리를 사용하면, 실제 SQL Server가 사용중인 CPU를 확인할 수 있다.

SELECT scheduler_id, cpu_id, status, is_online
FROM sys.dm_os_schedulers