SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴

 

  • Version : SQL Server 2016

 

SQL Server 데이터베이스에서 로그 파일(LDF)이 생성 또는 증가하는 경우 특정 바이트(0x00) 패턴의 스탬프가 기록된다. 이 패턴은 로그블록 레이아웃의 마지막 로그마커 표시이다.

SQL Server 7.0에 변경된 LDF 포맷 디자인은Sybase 데이터베이스의 2K 단위로 로그 블럭을 0(0x00)으로 섹터를 정렬하는 디자인을 따른 것으로, LDF 파일이 새로 생성되거나 확장할 경우 확장 로그에 대해 0x00 바이트 로그를 기록 한다.

 

SQL Server 2016에서는 0x00대신 0xC0로 스탬프를 변경하였다. (2014년 이후의 Azure SQL 경우 변경된 스탬프를 사용하고 있다.) 그렇다면 0x00에서 0xC0으로 변경되었을때 어떤 성능향상이 있을까?

 

새로운 하드웨어는 대부분 0x00 패턴으로 감지한다. 미디어 공간을 안정적으로 0으로 기록한 다음 백그라운드에서 하드웨어 기반의 가비지컬렉터를 통해 블록을 회수한다. SQL Server는 LDF확장하거나 생성할 때 트랜잭션 활동을 지원하기 위해 새로운 세그먼트를 생성해야 한다.

  • 지역 할당
  • 0x00 패턴으로스탬프 기록
  • 하드웨어는 새로 할당된 영역을 확보
  • SQL Server는 새로운 트랜잭션 레코드를 작성

 

하드웨어는 새로운 트랜잭션 로그 레코드가 공간을 반복적으로 획득하는 것을 강제로 회수할 수있다. 또 다른 사실은 스탬프 활동에 따른 비동기 I/O 간섭이다. SQL Server 는 게시(비동기 I/O핸드오프)와 작업자가 계속해서 처리할 수 있도록 설계되었다. 스탬프 활동은 자주 I/O 요청을 동기 방식으로 완료한다. 이 패턴은 SQL Server의 스케줄링에 방해를 주는 동작으로 성능 감소가 발생할 수 있다.

 

SQL Server 2016에서 변경된 0xC0 패턴 변경은 일반적인 스탬프 기법을 피하여 성능을 개선하는 것이다. 주의사항은 SQL Server 데이터파일을 저장하는데 사용되는 프로비저닝 환경이나 중복 제거 서브시스템 경우 성능에 미치는 영향을 검토해야 한다.

 

(개선된 디자인이 얼마나 성능 향상이 되었는지는 필자도 잘은 모르겠다. LDF는 메인터넌스 작업때 적절하게 미리 늘려서 할당하는것이 최선의 방법인 듯 하다.)

 

 

[참고자료]

https://blogs.msdn.microsoft.com/psssql/2016/03/22/sql-2016-it-just-runs-faster-ldf-stamped/




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

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 38421
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 20740
2074 SQL Server Install on Linux (Ubuntu – 16.0.4) jevida(강성욱) 2017.01.11 5145
2073 SQL Azure blob storage 백업을 위한 프록시 세팅 jevida(강성욱) 2017.01.11 4314
2072 SQL on Azure 환경에서 SQL 서버 연결 불능 문제(VNET 설정 문제) jevida(강성욱) 2017.01.11 3389
2071 SQL Server 2016 자동 통계 업데이트 임계값 변경 jevida(강성욱) 2017.01.11 4824
2070 SQL Server 2016 Multiple Log Writer Workers jevida(강성욱) 2017.01.11 3898
2069 SQL Server 2016 Larger Data File Writes jevida(강성욱) 2017.01.11 3260
2068 SQL Server 2016 향상된 업데이트 스케줄링 알고리즘 jevida(강성욱) 2017.01.11 3718
2067 SQL Server 2016 Automatic Soft NUMA jevida(강성욱) 2017.01.11 3197
2066 SQL Server 2016 Tempdb 환경 설정 jevida(강성욱) 2017.01.11 4507
2065 SQL Server 2016 향상된 즉시 파일 초기화 jevida(강성욱) 2017.01.11 2840
» SQL Server 2016 LDF 생성 또는 증가 시 변경된 스탬프 패턴 jevida(강성욱) 2017.01.11 2699
2063 SQL Server 2016 Tempdb 성능 향상 jevida(강성욱) 2017.01.11 4895
2062 SQL Server 2016 DBCC CHECK 작업 성능 향상 jevida(강성욱) 2017.01.11 2443
2061 Microsoft Azure - SQL Server가 포함된 가상 컴퓨터 생성하기 jevida(강성욱) 2017.01.11 1897
2060 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.01.11 1361
2059 Sys.dm_exec_query_plan 에서 query_plan 컬럼의 NULL 값 반환 jevida(강성욱) 2017.01.11 1970
2058 SSMS에서 유효하지 않은 소유자로 데이터베이스 정보가 보이지 않는 증상 jevida(강성욱) 2017.01.11 1974
2057 SQLCMD 유틸리티 사용하기 jevida(강성욱) 2017.01.11 8365
2056 In-Memory 최적화 테이블을 사용하여 임시 테이블 및 테이블 변수 성능 향상 jevida(강성욱) 2017.01.11 5412
2055 SQL Server Job Agent는 몇 개까지 실행이 가능할까? jevida(강성욱) 2017.01.11 1845





XE Login