SQL Server 2016 과 추적 플래그 –T8048
Version : SQL Server 2016
SQL Server 2016 부터 도입된 Automatic soft NUMA에서 CMemThread partitioning의 다양한 변화로 인해 추적 플래그 –T8048이 필요 할까?
Microsoft Document에 따르면 SQL Server 2014 SP2 및 SQL Server 2016이상에서는 –T8048이 영향을 주지 않는다고 한다.
· Trace Flag : https://msdn.microsoft.com/en-us/library/ms188396.aspx
SQL Server 2016이전에는 추적 플래그 –T8048은 NUMA의 분할된 CMemThread 개체를 CPU 파티션 기반 개체로 업그레이드 하는데 사용되었다. CMemThread 개체 중 일부가 NUMA 파티션으로 업그레이드 되어 추가 파티션을 위해 필요에 따라 –T8048을 사용할 수 있었다.
CMemThread에 관한 세부정보는 아래 링크를 참고 한다.
· CMemThread and Debugging Them : https://blogs.msdn.microsoft.com/psssql/2012/12/20/how-it-works-cmemthread-and-debugging-them/
대다수의 CMemThread 개체(SQL 2005, 2008, 2008R2, 2012, 2014, Azure DB 의 2016)는 분할 되지 않았다. 일부는 NUMA 노드로 분할되고 CPU를 생성하는 동안 더 적은 수만큼 분할된다. 추적 플래그 –T8048은 NUMA분할로 이미 생성된 CMemThread 개체만 업그레이드 한다. 즉 –T8048의 범위는 몇 가지 주요 CMemThread 개체로 제한된다.
SQL Server 2016에서 CMemThread는 지정된 파티션으로 CMemthread를 생성할 수 도록 디자인이 업데이트 되었다. 예를 들어 공간을 지원하는 메모리 객체는 기본적으로 CPU 분할로 생성되므로 공간 메모리 객체에 대한 분할 조정이 되지 않는다. 새 디자인은 개별 CMemThread 개체와 관련된 대기를 모니터링 하며 대기가 방해가 되기 시작하면 SQL Server는 특정 CMemThread가 사용하는 파티션을 자동으로 업그레이드 한다. 즉 SQL Server는 대기중인 작업 활동을 기반으로 CMemThread 개체를 자동으로 조정한다.
· 메모리 개체가 글로벌(분할되지 않음)이고 최적화 되어야 할 경우 SQL Server는 NUMA 노드로 파티션을 분할 한다.
· 메모리 오브젝트가 NUMA 노드에 의해 파티셔닝 되었다가 이전 파티셔닝 조정으로 인해 추가 대기 조건이 필요하면 CPU에 의해 파티셔닝 된다.
이는 실제 버퍼 풀의 sub/super latch 프로모션 디자인에 기반한다. 경합 래치가 분할 될 수 있는 것 처럼 핫 메모리 객체도 분할 된다. 즉 성능 최적화를 위해 SQL Server가 CMemThread 대기 활동으로 동적으로 조정하도록 설계 되었으며 추적 플래그 –T8048이 더이상 유효하지 않거나 SQL Server 2016에 필요하지 않게 되었다. 이러한 디자인에는 몇 가지 이점이 있다.
· 추적 플래그 필요 없음
· 시간에 따라 다를 수 있는 작업 부하에 맞게 동적으로 조정 가능
· 파티셔닝이 필요할 때까지 추가 메모리가 필요하지 않음
메모리 개체가 분할되면 SQL Server 인스턴스의 수명 동안 분할된다. 대기 상태 정보는 일시적이며 지속되지 않음으로 SQL Server 인스턴스를 다시 시작하면 메모리 개체가 기본 상태로 돌아간다. 다시 대기 압력이 발생하면 메모리 객체는 DBA의 개입없이 필요에 따라 분할된다.
[참고자료]
https://blogs.msdn.microsoft.com/bobsql/2016/06/22/does-sql-server-2016-require-trace-flag-t8048/
2017-01-24 / 강성욱 / http://sqlmvp.kr
SQL Server, MS SQL, SQL 2016, TF –T8048, Trace Flag, CMemThread, NUMA, Soft NUMA, Memory object, Memory partitioning
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server DTC Transaction의 SPID = -2 반환 (0) | 2017.03.13 |
---|---|
SQL Server Read/Writer 동기화 작동 원리 (0) | 2017.03.13 |
SQL Server가 논리 및 물리 프로세서를 결정하는 방법 (0) | 2017.03.13 |
데이터베이스에서 사용자 삭제 오류 (0) | 2016.12.08 |
SQL Server 2016 자동 통계 업데이트 임계값 변경 (1) | 2016.10.29 |