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

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

SQL Server 2016 향상된 업데이트 스케줄링 알고리즘

 

  • Version : SQL Server 2016, Azure SQL Server

 

SQL Server 2016에서는 업데이트 스케줄링에 대한 알고리즘이 향상되었다. 기존에는 큰 CPU 퀀텀 작업자(Large CPU Quantum)와 작은 작업자(Short CPU Quantum) 사이에서 스케줄링에 의해 자원 액세스에 대한 불균형이 발생할 수 있었다. 이 테스트는 SQL Server 2012 및 2014에서 백분위(percentile) 스케줄링 기반의 알고리즘에서 발견되었다.

 

다음 예제를 보면 작업자1(W1)은 읽기 및 인메모리 데이터베이스 페이지의 미리 읽기 등의 큰 작업을 하고 작업자2(W2)는 짧은 작업을 한다. 예를 들어 작업자1은 버퍼풀에서 이미 정보를 찾아 I/O 작업을 위해 양보할 필요가 없다. 작업자1은 전체 CPU Quantum을 소모할 수 있다. 한편 작업자2는 스케줄링을 배당받기 위한 작업을 수행한다. 리소스거버너 및 기타 활동에 대한 스케줄링 패턴을 그림으로 표현하면 다음과 같다.

작업자1은 작업자2보다 5배 더 많은 CPU 사이클을 받고 있다. 테스트에서는 다양한 워크로드 및 시스템 작업에서 문제를 발견했다. 작업자2가 로그쓰기(Log write)인 경우 차단 및 잠금을 보유하고 로그를 기록하는 이슈에 대해서 더 오래 걸리는 문제가 발생한다.

 

SQL Server 2016 및 Windows Azure SQL Database(WASD)는 모든 작업자가 공정한 스케줄링을 받을 수 있도록 Quantum 패턴을 모니터링 한다. SQL Server 2016에서는 스케줄링 패턴이 아래 그림과 같이 나타난다. 이 단순한 예제에서 작업자2는 비우호적인 작업자1의 독점적인 반복 quantum 작업을 방지할 수 있다.

참고 : 스케줄러 변경 사항은 2014년 3월 Windows Azure SQL Server 데이터베이스에 배포되었다.

 

[참고자료]

https://blogs.msdn.microsoft.com/psssql/2016/04/01/sql-2016-it-just-runs-faster-updated-scheduling-algorithms/




강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
2070 SQL Server 2016 Multiple Log Writer Workers jevida(강성욱) 2017.01.11 3795
2069 SQL Server 2016 Larger Data File Writes jevida(강성욱) 2017.01.11 3183
» SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 jevida(강성욱) 2017.01.11 3648
2067 SQL Server 2016 Automatic Soft NUMA jevida(강성욱) 2017.01.11 3096
2066 SQL Server 2016 Tempdb 환경 설정 jevida(강성욱) 2017.01.11 4372
2065 SQL Server 2016 향상된 즉시 파일 초기화 jevida(강성욱) 2017.01.11 2751
2064 SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴 jevida(강성욱) 2017.01.11 2633
2063 SQL Server 2016 Tempdb 성능 향상 jevida(강성욱) 2017.01.11 4680
2062 SQL Server 2016 DBCC CHECK 작업 성능 향상 jevida(강성욱) 2017.01.11 2373
2061 Microsoft Azure - SQL Server가 포함된 가상 컴퓨터 생성하기 jevida(강성욱) 2017.01.11 1840
2060 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.01.11 1303
2059 Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 jevida(강성욱) 2017.01.11 1873
2058 SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 jevida(강성욱) 2017.01.11 1822
2057 SQLCMD 유틸리티 사용하기 jevida(강성욱) 2017.01.11 7754
2056 In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 jevida(강성욱) 2017.01.11 4431
2055 SQL Server Job Agent는 몇 개까지 실행이 가능할까? jevida(강성욱) 2017.01.11 1756
2054 확장이벤트 사용시 주의사항 jevida(강성욱) 2017.01.11 1630
2053 Unix(Linux) timestamp(bigint) 형식을 datetime 으로 변경하기 jevida(강성욱) 2017.01.11 2901
2052 Query Rule Off를 사용한 SQL Server 옵티마이저 비활성화 jevida(강성욱) 2017.01.11 1570
2051 시스템 관리자 권한이 없는 특정 프로그램에서 Trace Flag 사용하기 jevida(강성욱) 2017.01.11 2256





XE Login