SQL Server 2017 소규모 시스템에서 향상된 리소스 사용

 

·         Version : SQL Server  2017 CU4

 

SQL Server 소규모 컴퓨터에서 엔터프라이즈 서버까지 확장 있도록 설계된 데이터베이스이다. 일반적으로 데이터베이스는 많은 자원을 필요로 한다. 특히 CPU 메모리는 데이터베이스의 성능에 매우 중요한 요소이다. (물론 디스크 성능도 중요하다.) SQL Server 2017 CU4에서는 작은 메모리(2GB)에서도 SQL Server 성능이 향상될 있도록 개선 되었다.

·         Improvement: Improves the performance of SQL Server 2017 on smaller systems : https://support.microsoft.com/en-us/help/4078095/improves-performance-of-sql-server-2017-on-smaller-systems

 

[Default Max Worker Threads]

이전에는 기본 최대 작업자 스레드 계산에서 RAM 고려하지 않는 디자인이었다. 기본 워커 수를 계산하는 공식은 아래와 같다.

Default-Worker-Count = (starting count x86=256 : x64=512) + (## of workers per CPU on the system [x86=8 : x64=16])

 

SQL Server 2017 CU4에서 변경한 사항은 최대 작업자 스레드를 계산할때, RAM 사이즈를 고려하여, RAM 크기가 제한된 시스템에서는 X64 카운트는 2 나누어져 기본 최대 작업자 수를 낮춰 준다. (작업자당 2MB 이하).

·         Sp_configure에서 ‘max workers’ 설정은 시스템 값을 무시할때 사용

·         기본값128 이상으로 설정하는 것을 권장

·         Sys.dm_os_sys_inof 활성 가능한 최대 작업자 설정 값을 출력

 

[CLR Garbage Collection]

CLR 가비지 수집은 클리이언트 모드, 서버 모드가 있다. (SQL Server 기본값은 서버 모드 이다.) 서버 모드 가비지 수집은 시스템 CPU 수를 기반으로 CLR힙에 대한 공간을 예약한다. SQLCLR 시작되면 서버 모드에서는  가비지 콜렉션을 초기화 하기위해 대량의 메모리 공간을 할당한다. 이러한 대규모 할당은 운영체제가 스와핑 또는 기타 활동을 유발 시킬 있다. 클라이언트 모드 가비지 콜렉션은 서버모드의 병렬처리 CPU 활동을 줄여 메모리와 리소스를 차지 한다. SQL Server 2017 CU4에서 변경한 사항은 제한된 소규모 시스템에서 클라이언트 가비지 수집 모드를 사용하여 서버 모드의 가비지 수집시 발생하는 추가 오버헤드를 제거하는 것이다.

 

[참고자료]

https://blogs.msdn.microsoft.com/bobsql/2018/03/18/sql-server-2017-improved-resource-usage-on-smaller-machines/

 

 

2018-06-12 / Sungwook Kang / http://sqlmvp.kr

 

SQL Server, MS SQL,  max worker threads, CLR, garbage collection, SQL 2017, 가비지 콜렉션, 워커스레드, 작업자 스레드

+ Recent posts