본문으로 건너뛰기

스토리지 엔진

스토리지 엔진 화면에서는 SingleStore가 데이터를 저장하는 두 방식인 Rowstore와 Columnstore의 메모리·디스크 사용 현황을 확인할 수 있습니다. 분산 환경에서는 특정 노드에 데이터가 몰리는 쏠림(skew)이 성능 저하로 이어지는데, 이 화면은 노드 간 분포를 한눈에 보여 줘서 쏠림을 빠르게 찾도록 돕습니다. SingleStore를 운영하는 DBA가 대상 독자입니다.

Rowstore와 Columnstore

SingleStore는 데이터를 두 방식으로 저장합니다. 먼저 두 개념을 알아 두면 화면을 읽기가 쉽습니다.

  • Rowstore는 데이터를 메모리에 행 단위로 저장합니다. 빠른 읽기·쓰기에 유리하지만 메모리를 많이 사용합니다. 쉽게 말하면 자주 꺼내 쓰는 물건을 책상 위에 올려 두는 방식에 가깝습니다.
  • Columnstore는 데이터를 디스크에 열 단위로 압축해 저장합니다. 대용량 분석에 유리하고 디스크 효율이 높습니다. 자주 쓰지 않는 물건을 압축해 창고에 넣어 두는 방식에 가깝습니다.

화면은 이 둘을 나눠서 보여 줍니다.

요약 정보

화면 상단에서 조회할 클러스터(예: memsql_cluster)를 선택하면, Rowstore와 Columnstore의 상태를 두 개의 요약 카드로 보여 줍니다. 각 카드에는 주의가 필요한 상태일 때 WARN 배지가 표시됩니다.

CardDescription
Rowstore 요약 정보Total in Memory, Max Node Mem, Avg Memory Deviation, Worst skew table
Columnstore 요약 정보Total on Disk, Compression, Avg Disk Deviation, Worst skew table

Avg Memory Deviation·Avg Disk Deviation는 노드 간 사용량 편차를 배수로 나타냅니다. 값이 클수록 특정 노드에 데이터가 몰려 있다는 뜻입니다. Worst skew table은 쏠림이 가장 심한 테이블을 함께 짚어 줍니다.

Rowstore 영역

Rowstore는 메모리를 사용하므로 메모리 사용량과 노드별 분포가 핵심 지표입니다.

WidgetDescription
노드별 메모리 사용률노드별 호스트 메모리 사용률을 게이지로 표시
Memory TrendTable Memory(Rowstore)와 Server Memory(Process)의 시간 추이
Memory-Risk Tables (TOP 5)메모리 위험도가 높은 테이블 상위 5개

노드별 메모리 게이지는 호스트 메모리 사용률을 사용량과 전체 용량(예: 2.4 / 3.7 GB), 백분율로 함께 표시합니다. <80%, 80-90%, >90% 구간을 색으로 구분하며, 애그리게이터(MA/CA) 노드는 기본적으로 접혀 있어 펼쳐서 볼 수 있습니다.

Memory-Risk Tables (TOP 5)는 다음 컬럼으로 구성됩니다.

ColumnDescription
Table테이블 이름과 데이터베이스
Worst Node사용량이 가장 큰 노드
Size (Total)전체 메모리 사용량과 행 수
Parts파티션 수
Skew노드 간 쏠림 배수

Columnstore 영역

Columnstore는 디스크를 사용하므로 디스크 사용량과 세그먼트 상태가 핵심입니다.

WidgetDescription
노드별 디스크 사용률노드별 디스크 사용량을 막대로 표시
Segment Group 추이세그먼트 그룹 수(group_cnt)의 일간 비교와 상위 테이블
Size Top 5디스크를 많이 차지하는 테이블 상위 5개

노드별 디스크 막대는 SingleStore가 사용하는 디스크를 영역별로 나눠 보여 줍니다. 막대를 클릭하면 노드별 상세 구성을 확인할 수 있습니다.

AreaDescription
Data컬럼스토어 데이터
Snapshot스냅샷
Log트랜잭션 로그
Temp임시 데이터
Etc파티션 외 영역
Others그 외 OS 사용량
Free남은 공간

Size Top 5는 테이블별로 압축 후 크기(Size (Total)), 압축률(Compression), 행 수(Rows)와 사용량이 가장 큰 노드(Worst Node)를 보여 줍니다.

여기서 헷갈릴 수 있는 부분은 Segment Group 추이입니다. SingleStore는 Columnstore 데이터를 세그먼트로 관리하고, 백그라운드 머저(merger)가 작은 세그먼트를 합쳐 정리합니다. Segment Group 추이는 클러스터의 group_cnt 합을 하루 전과 비교해 보여 주고, 현재 group_cnt가 큰 테이블 상위 5개를 24시간 변화량(Δ24h)·파티션 수와 함께 표로 제공합니다. group_cnt가 계속 우상향한다면 자동 머저가 INSERT 속도를 따라잡지 못한다는 신호로 볼 수 있으며, 이 경우 OPTIMIZE 작업을 검토하게 됩니다.

데이터 쏠림(skew) 확인

분산 데이터베이스에서 데이터가 특정 노드에 치우치면 그 노드만 부하를 떠안게 됩니다. 스토리지 엔진 화면은 쏠림을 다음 지표로 보여 줍니다.

MetricDescription
Max Node Mem노드 중 가장 높은 메모리 사용률
Avg Memory DeviationRowstore 메모리 사용량의 노드 간 평균 편차(배수)
Avg Disk DeviationColumnstore 디스크 사용량의 노드 간 평균 편차(배수)
Skew테이블 단위 노드 간 쏠림 배수
Worst skew table쏠림이 가장 심한 테이블

쏠림이 심한 테이블 행을 클릭하면 상세 드로어가 열리고, 노드별 분포와 함께 OPTIMIZE 권장 안내를 확인할 수 있습니다.

OPTIMIZE 권장 안내

테이블 상세 드로어에서는 데이터 정리(OPTIMIZE)가 필요한지 단계별로 안내합니다. 안내는 권장 수준에 따라 나뉩니다.

조회 시점

화면은 실시간 타임셀렉터를 사용합니다. 수집 주기에 맞춰 최근 수집값을 보여 주며, Memory Trend는 최근 1시간, 클러스터 요약은 최근 7일 범위를 기본으로 조회합니다.