반응형

/*******************************************************************************************************************
-- Title : [SQL2016] 데이터 압축(data_compression) 테스트
-- Reference : https://msdn.microsoft.com/ko-kr/library/cc280449.aspx
-- Key word : data compression 데이터압축 데이터 압축 data_compression page 압축 row 압축 page압축 row압축
*******************************************************************************************************************/

/**************************************************
-- 압축 데이터 생성 및 메타 조회
**************************************************/
-- ROW|PAGE 압축 테이블 생성
create table ttt
(
  ...
, constraint pk_ttt primary key (col1)
  with (data_compression=row|page) on fg_data
) on fg_data;

create table ttt2

  ...
) with (data_compression=row|page)
on fg_data;

-- 테이블 변경
alter table ttt3
rebuild with (data_compression=row|page);

-- 압축 정보 확인
select object_name(i.object_id) "tbl_nm"
     , i.name, p.data_compression, p.data_compression_desc
from sys.partitions p
inner join sys.objects o
on p.object_id = o.object_id
and o.type = 'U'
inner join sys.indexes i
on p.object_id = i.object_id
and p.index_id = i.index_id
where data_compression <> 0;



/**************************************************
-- 성능 테스트
**************************************************/

-- Insert(300만건)
    * 다른 테이블에서 읽어 CL 테이블, ROW 압축 테이블, PAGE 압축 테이블에 저장.
    * 다른 테이블을 읽는데 왜 CL > Row > Page순으로 IO가 다른지 모름.
    * CPU는 Page가 다른 두 테이블보다 2개 정도 커짐.
    * Write, Dur, Size 모두 CL > Row > Page 순으로 작아짐.

 테이블

 CPU

 Read IO

Write IO 

 Dur(ms)

 Size(kb)

  CL

 10,256

 993,207

98,948 

40,665 

694,099 

  Row 압축

 11,036

 585,122

50,741 

31,011 

381,288 

  Page 압축

 22,125

 282,528

19,945 

29,106 

148,336 



-- Select(100만건)
    * Read, Dur는 확실히 Page가 작음.
    * 대신 Page의 CPU가 CL대비 2배 정도 증가됨.


 테이블

 CPU

 Read IO

Write IO 

 Dur(ms)

 Size(kb)

  CL

  984

29,046

-

8,878

-

  Row 압축

1,182

16,036

3,637

  Page 압축

1,547

   6,509 

2,286


-- Update(300만건)
    * Dur가 왜 Row가 가장 좋은지 모름.
    * CPU와 Write는 여전히 Page가 높음.

 테이블

 CPU

 Read IO

Write IO 

 Dur(ms)

 Size(kb)

  CL

13,631

339,989

139,723

44,756

1,057,915

  Row 압축

  8,120

  47,869

  47,551

14,359

  381,056

  Page 압축

21,662

137,392

  38,974

22,968

  311,405


-- Delete(50만건)
    * Select와 유사한 결과를 보임.

 테이블

 CPU

 Read IO

Write IO 

 Dur(ms)

 Size(kb)

  CL

1,474

399,916

22,168

20,657

706,243

  Row 압축

1,250

142,628

  7,917

  6,281

254,240

  Page 압축

1,738

115,821

  6,466

  4,014

211,717


반응형

+ Recent posts