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에서 변경한 사항은 제한된 소규모 시스템에서 클라이언트 가비지 수집 모드를 사용하여 서버 모드의 가비지 수집시 발생하는 추가 오버헤드를 제거하는 것이다.
[참고자료]
2018-06-12 / Sungwook Kang / http://sqlmvp.kr
SQL Server, MS SQL, max worker threads, CLR, garbage collection, SQL 2017, 가비지 콜렉션, 워커스레드, 작업자 스레드
'SQL Server > SQL Server Tip' 카테고리의 다른 글
Azure SQL에서 네트워크를 구성하는 방법 (0) | 2019.03.25 |
---|---|
SQL Server 네이티브 컴파일된 저장 프로시저 성능 모니터링 (0) | 2019.03.25 |
클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 (0) | 2019.03.25 |
SQL Server 2016 향상된 복제 기능 – 배포 데이터베이스 클린업 향상 (0) | 2019.03.25 |
SQL Server 2017향상된 복제 기능 – 배포 데이터베이스의 AG 지원 (0) | 2019.03.25 |