데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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, 가비지 콜렉션워커스레드작업자 스레드



출처: https://sqlmvp.tistory.com/1252?category=618825 [Database Lab]
No. Subject Author Date Views
2150 SQL Server 2019 에서 업그레이드된sp_estimate_data_compression_savings 프로시저 (컬럼스토어 압축율 예상) jevida(강성욱) 2019.03.26 532
2149 SQL Server 2019 에서 추가된sys.dm_db_page_info, sys.fn_PageResCracker 기능으로 대기 관련 정보 확인 jevida(강성욱) 2019.03.26 776
2148 SQL Server 2019에서 향상된 Rowstore batch mode jevida(강성욱) 2019.03.26 422
2147 SQL Server 2016부터 도입된 USE HINT를 사용한 추적 플래그 활성화 jevida(강성욱) 2019.03.26 441
2146 In-memory optimized table에 사용되는 Hash Index jevida(강성욱) 2019.03.26 390
2145 VM환경에서 AG를 구성하였을때VSS 백업 동작 변경 jevida(강성욱) 2019.03.25 396
2144 SQL Server 2016 향상된 가용성 그룹 – 데이터베이스 수준의 상태 탐지 장애조치 jevida(강성욱) 2019.03.25 422
2143 SQL Server 2016 대용량 데이터 로드시 최소 로깅(minimal logging) 과Batch Size jevida(강성욱) 2019.03.25 312
2142 SQL Server 설치시 발생하는 1638 오류 jevida(강성욱) 2019.03.25 412
2141 SQL Server 666코드의 고유 식별자 오류 jevida(강성욱) 2019.03.25 294
2140 SQL Server AlwaysOn synchronous-commit 환경에서 동기화 레이턴시 트러블슈팅 jevida(강성욱) 2019.03.25 351
2139 SQL Server Scheduling and Yielding 트러블슈팅 jevida(강성욱) 2019.03.25 354
2138 SQL Server 2016 Tempdb 경합(contention) 최적화 jevida(강성욱) 2019.03.25 441
2137 XEvent를 사용하여 Auto tuning 작업 모니터링 jevida(강성욱) 2019.03.25 453
2136 SQL Server In-Memory OLTP에 ASP.NET 세션 상태 저장하기 jevida(강성욱) 2019.03.25 351
2135 SQL Server에서 JSON 데이터 저장하기 jevida(강성욱) 2019.03.25 426
2134 Azure SQL에서 네트워크를 구성하는 방법 jevida(강성욱) 2019.03.25 231
2133 SQL Server 네이티브 컴파일된 저장 프로시저 성능 모니터링 jevida(강성욱) 2019.03.25 444
» SQL Server 2017 소규모 시스템에서 향상된 리소스 사용 jevida(강성욱) 2019.03.25 259
2131 클러스터 컬럼스토어 인덱스(Clusterd Columnstore Index)에서 대량 인서트 작업시 발생하는 래치 경합 최소화 트릭 jevida(강성욱) 2019.03.25 401





XE Login