Search

SORT KEY의 정렬 방식(ASC/DESC)에 따른 ingestion 성능 확인

문서번호 : 11-893360

Document Information

•
최초 작성일 : 2022.07.28
•
최종 수정일 : 2022.08.09
•
이 문서는 아래 버전을 기준으로 작성되었습니다.
◦
SinglestoreDB : 8.1

Goal

컬럼스토어 테이블의 SORT KEY (컬럼스토어 인덱스)의 정렬이 ASC 또는 DESC일때 기존 segment 파일에 데이터가 어떻게 추가되는지? 또 성능에 어떤 영향을 미치는지 확인합니다.

Solution

결론

•
ingestion 성능은 차이 없습니다.,
•
select시 sort key에 대한 reverse scan은 지원하지 않습니다.

시험 내용

•
시험 항목
1) 성능 차이 : 두 정렬 방식의 ingestion 성능 차이를 확인합니다.
2) 저장 방식 : Segment(파일)에 어떻게 데이터가 정렬되어 저장되는지 확인합니다.
새로운 데이터가 저장될때, Segment의 끝에 append되는 것인지, 맨앞에 insert되는 것인지 확인 합니다.
•
시험 환경
1) 컬럼스토어, SORT KEY는 데이터의 생성 시각
2) Kafka 파이프라인을 통해 데이터는 생성되는 대로 테이블에 적재됩니다.
•
시험시 유의 사항
◦
메모리내 rowstore-backed segment가 디스크로 flush 되어야 segment(파일)를 확인할 수 있습니다. (즉시 flush 하려면 OPTIMIZE TABLE ..<table> FLUSH; 사용)
•
시험 결과 요약
◦
컬럼스토어는 row를 컬럼으로 나누고, 컬럼 끼리 SORT KEY에 의한 정렬순으로 값을 저장합니다. (컬럼세그먼트)
create table tbl (col1 varchar(100), col2 varchar(100), col3 varchar(100), shard key(col1), sort key(col1)); insert into tbl values ('1', 'aaa', 'A'), ('2', 'bbb', 'B'), ('3', 'ccc', 'C'), ('4', 'ddd', 'D'); optimize table tbl full; -- segment 파일의 내용 출력 $sudo strings blobs/21147/0/0/108136715_25 aaabbbccc insert into tbl values ('5', 'eee', 'E'), ('6', 'fff', 'F'), ('7', 'ggg', 'G'), ('8', 'hhh', 'H'); optimize table tbl full; -- segment 파일의 내용 출력 $ sudo strings blobs/21147/0/0/108136715_34 12368 aaabbbcccfffhhh
SQL
복사
◦
rowstore-backed segment가 디스크로 flush될때는 segment(파일)가 새롭게 만들어집니다.
◦
즉, 기존 segment파일에 append되거나 insert되는 것이 아닌 새로운 segment파일이 생성됩니다.
Columnstore의 데이터 흐름.pptx
39.8KB
◦
그러므로, ASC/DESC에 대한 정렬방식은 segment(파일)의 쓰기 성능에 영향을 미치지 않습니다.
◦
단, ASC/DESC 정렬방식은 SELECT 성능에 영향을 미칩니다. (현재, 컬럼스토어 인덱스는 reverse scan/order 가 지원되지 않습니다.)

References

•
Columnstore : Link
•
Understanding Sort Key Selection : Link

History

일자
작성자
비고
2022.07.28
kkh
최초 작성 (task 결과 정리)
2022.08.09
kkh
ColumnStore 의 data 이동 설명 그림 추가