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

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

In-Memory OLTP 사용할  체크포인트 파일이 너무 많아 지는 이유

 

·         Version : SQL Server 2014, 2016

 

SQL Server에서 로그 백업은 매우 중요하다로그 백업을 수행하지 않으면 로그 증가와 체크포인트 파일 증가가 발생할  있다.  트랜잭션 로그 아키텍처에 관해서는 아래 링크를 참고 한다.

·         트랜잭션 로그 논리 아키텍처 - http://sqlmvp.kr/140187294218

·         트랜잭션 로그 물리 아키텍처 - http://sqlmvp.kr/140187358202

·         LDF 파일이 잘리지 않는 이유 - http://sqlmvp.kr/140194327713

·          

 

이번 케이스는 하나의 In-Memory 최적화 테이블이 있는 데이터베이스를 복원  해당 테이블을 삭제하였다그리고 체크포인트가 발생할때 마다 체크포인트 파일 수가 계속 증가하는 이슈이다.

 케이스는 sys.dm_db_xtp_checkpoint_files 실행하여 state_desc 확인결과 트랜잭션 로그를 백업하지 않아 체크포인트 파일에 대해 “WAITING FOR LOG TRUNCATION” 발생한 상황이다.





 

체크포인트 파일은 삭제되고 제거되기 전에 여러 단계를 거친다.   “WAITING FOR LOG TRUNCATION” 에서는 로그가 제거   없다 로그 백업을 실행하지 않아 로그 증가와 체크포인트 파일 증가한 현상이다.

 

 상황은 아래 시나리오를 사용하여 재현   있다.

1.       데이터베이스 생성

2.       메모리 최적화 테이블 생성

3.       메모리 최적화 테이블에 데이터 입력

4.       데이터베이스 FULL 백업 진행. (Log 백업 수행하지 않음)

5.       반복문을 사용하여 체크포인트 반복 실행

6.       체크포인트 파일이 있는 폴더를 확인하여 파일수가 계속 증가하는지 확인

7.       5번의 작업을 중지  로그 백업 진행.

8.       체크포인트 파일이 사라진것 확인

 

 

Num

Query

1

CREATE DATABASE imoltp

GO

ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA

go

ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\_sql_data\imoltp_mod1') TOFILEGROUP imoltp_mod

go

2

use imoltp

go

 

CREATE TABLE dbo.ShoppingCart (

ShoppingCartId INT IDENTITY(1,1) PRIMARY KEY NONCLUSTERED,

UserId INT NOT NULL INDEX ix_UserId NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),

CreatedDate DATETIME2 NOT NULL,

TotalPrice MONEY

) WITH (MEMORY_OPTIMIZED=ON)

GO

3

insert into dbo.ShoppingCart (Userid, CreatedDate, TotalPrice) values ( 1, getdate(), 1)

go

4

backup database imoltp to disk = 'c:\_SQL_Data\imoltp.bak' with init

go

5

while 1 = 1 checkpoint

6

--Command from the following periodically to see file growth

dir /c:\_sqld_ata\imoltp_mod1

7

--stop the checkpoint in the while loop above and issue a backup log.

backup log imoltp to disk = 'c:\_SQL_Data\imoltp.trn' with init

8

--Then observe the files will eventually go away

checkpoint

 

 

체크포인트 파일은 메모리 최적화 파일의 데이터  델타 파일이다메모리 최적화 테이블은 메모리에 데이터가 저장되어 있더라도 SQL Server 재해 복구를 위해 데이터를 유지해야한다메모리 최적화 테이블의 데이터는 체크포인트 파일이라 불린다데이터 파일에는 삽입  업데이트 작업의 행이 포함되어 있다델타 파일에는 삭제된 행이 있다시간이 지남에 따라 이러한 파일을 병합하여 효율성을 늘리  있다파일이 병합한 후에는 불필요한 파일을 삭제될  있다그러나 로그백업 후에 가능하다.

 

[참고자료]

·         https://blogs.msdn.microsoft.com/psssql/2017/03/06/why-am-i-getting-so-many-checkpoint-files-when-i-have-in-memory-oltp-enabled/

·         https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/durability-for-memory-optimized-tables

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp
No. Subject Author Date Views
2090 SQL Server DBA 체크리스트 jevida(강성욱) 2017.05.31 6722
2089 SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법 jevida(강성욱) 2017.05.31 3729
2088 트리거가 적용된 메모리 최적화 테이블에서 alter table 실패 jevida(강성욱) 2017.05.31 3247
2087 메모리 최적화 테이블 변수 및 예상 행수 jevida(강성욱) 2017.05.31 2939
2086 백업 파일 복원과 3241 오류 (Microsoft® SQL Server® Backup to Microsoft Azure®Tool 사용) jevida(강성욱) 2017.05.31 3091
» In-Memory OLTP를 사용할 때 체크포인트 파일이 너무 많아 지는 이유 jevida(강성욱) 2017.05.31 2671
2084 메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) jevida(강성욱) 2017.05.31 3334
2083 메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성 jevida(강성욱) 2017.05.31 2936
2082 인덱스 리빌드시 병렬로 실행계획이 생성되지 않는 이유 jevida(강성욱) 2017.03.13 4927
2081 SQL Server 833오류 (15 Sec Slow IO Detected) jevida(강성욱) 2017.03.13 4297
2080 SQL Server nonpreemptive 모드에서Long Sync IO 오류 jevida(강성욱) 2017.03.13 3094
2079 SQL Server DTC Transaction의 SPID = -2 반환 jevida(강성욱) 2017.03.13 2394
2078 SQL Server Read/Writer 동기화 작동 원리 jevida(강성욱) 2017.03.13 2749
2077 SQL Server가 논리 및 물리 프로세서를 결정하는 방법 jevida(강성욱) 2017.03.13 2861
2076 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.03.13 2788
2075 SQL Server ODBC Driver 및 Command package Tool 설치 jevida(강성욱) 2017.01.11 4761
2074 SQL Server Install on Linux (Ubuntu – 16.0.4) jevida(강성욱) 2017.01.11 4995
2073 SQL Azure blob storage 백업을 위한 프록시 세팅 jevida(강성욱) 2017.01.11 4197
2072 SQL on Azure 환경에서 SQL 서버 연결 불능 문제(VNET 설정 문제) jevida(강성욱) 2017.01.11 3285
2071 SQL Server 2016 자동 통계 업데이트 임계값 변경 jevida(강성욱) 2017.01.11 4527





XE Login