스토리지 엔진
스토리지 엔진 화면에서 SingleStore 클러스터의 Leaf 노드가 메모리와 디스크를 얼마나 사용하는지, 어떤 데이터베이스와 테이블이 공간을 차지하는지 확인할 수 있습니다. 데이터가 특정 파티션에 집중된 테이블, 머지가 지연된 테이블, 압축률이 낮은 테이블도 함께 찾을 수 있습니다.
Rowstore와 Columnstore
SingleStore는 데이터를 두 방식으로 저장합니다.
- Rowstore는 데이터를 메모리에 행 단위로 저장합니다. 빠른 읽기와 쓰기에 유리하지만 메모리를 많이 사용합니다.
- Columnstore는 데이터를 디스크에 열 단위로 압축해 저장합니다. 대용량 분석에 유리하고 디스크 효율이 높습니다.
화면의 테이블 목록에서 Storage 열로 두 방식을 구분합니다. 모든 노드에 같은 데이터를 두는 Reference 테이블은 Rowstore (reference), Columnstore (reference)로 표시합니다.
조회 조건과 수집 주기
- 시간: 기본값은 실시간입니다. 과거 시점을 10분 단위로 선택할 수도 있습니다.
- 클러스터: 조회할 클러스터를 선택합니다. 처음에는 이름순 첫 번째 클러스터가 선택돼 있습니다.
데이터마다 수집 주기가 다릅니다. 화면 오른쪽 위에서 수집 주기별 마지막 수집 시각을 확인할 수 있고, 각 패널 오른쪽 위에는 해당 데이터의 수집 주기가 표시됩니다.
| 데이터 | 수집 주기 | 표시되는 곳 |
|---|---|---|
| 노드 메모리, 디스크 사용량 | 5초 | Leaf 메모리, Leaf 디스크 카드와 노드 표 |
| Rowstore, Columnstore | 1시간 | 데이터베이스, 테이블 목록, 컬럼스토어 단편화 추이 |
| 파티션 통계 | 12시간 | 디스크 드로어의 개요 |
실시간 조회 중에는 5초 주기 데이터가 약 5초마다 갱신됩니다. 테이블과 파티션 정보는 5분 단위로 다시 조회합니다.
Leaf 메모리와 Leaf 디스크
화면 맨 위 두 카드에 Leaf 노드 전체의 사용량을 사용량 / 전체 용량 형식으로 표시합니다. 카드 제목 옆 숫자는 Leaf 노드 수입니다.
- Leaf 메모리: Leaf 노드 memsqld 프로세스의 메모리 사용량 합계와 호스트 메모리 합계
- Leaf 디스크: Leaf 노드 데이터 디스크의 사용량 합계와 전체 용량 합계
노드
클러스터의 노드마다 메모리와 디스크 사용량을 표로 표시합니다.
| Column | Description |
|---|---|
Node | 노드 이름 |
Role | Leaf, Master Aggregator, Child Aggregator |
Memsqld memory | memsqld 프로세스 메모리 사용량 / 전체(%)와 최근 1시간 추이 |
Table memory | 테이블이 쓰는 메모리 사용량 / 한도(%)와 최근 1시간 추이 |
Disk | 디스크 사용량 / 전체(%)와 최근 24시간 추이 |
메모리 칸을 클릭하면 메모리 드로어가, 행을 클릭하면 디스크 드로어가 열립니다.
메모리 드로어
| 영역 | 내용 |
|---|---|
| 개요 | 테이블 메모리, memsqld (Non-table), Others, 가용 (Free) 반원 게이지. 가운데 숫자는 호스트 메모리 대비 memsqld 사용률. 게이지 위에 Table Limit, memsqld Limit 위치 표시 |
| 사용량 추이 | 최근 1시간 동안의 테이블 메모리와 memsqld 사용량 추이. 한도는 가로선으로 표시 |
| 테이블 | 이 노드에 있는 Rowstore 테이블과 노드 내 크기. 크기 필터로 범위 지정 |
디스크 드로어
| 영역 | 내용 |
|---|---|
| 개요 | Data (Master), Data (Replica), Snapshot, Log, Temp, Etc, 가용 공간을 게이지로 표시. 애그리게이터 노드에서는 데이터가 Data (Reference)로 표시됨 |
| 사용량 추이 | 최근 7일 동안의 Data, Snapshot, Log, Temp 사용량 추이 |
| 테이블 | 이 노드에 있는 Columnstore 테이블과 노드 내 크기, 압축 절감률. 크기 필터로 범위 지정 |
Leaf 노드에서 Log와 Snapshot을 합친 크기가 데이터의 3배 이상이면 점검 필요 태그와 "로그가 데이터의 N배" 안내가 표시됩니다.
데이터베이스와 테이블
데이터베이스 패널에 데이터베이스별 테이블 수(Rowstore와 Columnstore 개수), 메모리, 디스크, 행 수, 파티션 수가 표시됩니다. 첫 행 전체가 기본으로 선택돼 있고, 행을 클릭하면 아래 테이블 목록에 그 데이터베이스의 테이블만 표시됩니다.
주의가 필요한 테이블 찾기
테이블 목록 위의 칩에서 주의가 필요한 테이블 수를 확인할 수 있습니다. 칩 숫자는 클러스터 전체 기준이며, 해당 테이블이 없는 칩은 표시하지 않습니다.
| 칩 | 기준 |
|---|---|
| Skewed partitions | 가장 큰 파티션이 평균의 2배 이상인 테이블 |
| Merge backlog | 세그먼트 그룹이 3개 이상인 파티션이 있는 테이블 |
| Low compression | 10 MiB 이상인 Columnstore 테이블 중 압축 절감률이 33.3% 미만인 테이블 |
칩을 클릭하면 해당 테이블만 표시되고, 다시 클릭하면 해제됩니다.
테이블 목록
크기 필터에서 All, ≥ 100 MiB, ≥ 1 GiB, Top 5, Top 10 중 표시 범위를 선택합니다. 기본값은 Top 5이며, 선택한 값은 URL에 저장돼 화면을 다시 열어도 유지됩니다.
| Column | Description |
|---|---|
Table | 테이블 이름 |
Storage | Rowstore, Columnstore. Reference 테이블은 (reference) 표시 |
Size | 테이블 크기. 기본 정렬 기준(내림차순) |
Rows | 행 수 |
Compression | 압축 절감률(%). (1 − 압축 후 크기 ÷ 압축 전 크기) × 100. 33.3% 미만은 주황색, 66.7% 이상은 녹색 |
Partitions | 파티션별 크기 막대 그래프와 보고된 파티션 수/전체 파티션 수 |
Partitions 막대 그래프에서 보고된 파티션 평균보다 1.5배 이상 큰 파티션은 해당 막대가 주황색으로 표시됩니다. 막대를 클릭하면 파티션 상세 드로어가 열립니다. 자세한 내용은 파티션을 참조하세요.
테이블 상세 드로어
테이블 목록이나 드로어에서 테이블 행을 클릭하면 열립니다.
| 영역 | 내용 |
|---|---|
| 개요 | 크기 또는 메모리, 행 수, Cardinality, 사용 중인 파티션 수, 가장 큰 파티션의 크기와 행 수, 쏠림 배수(Memory Skew, Row Skew, Disk Skew), 압축 전 크기와 압축 절감률 |
| 파티션 배치 | Leaf 노드별 파티션 배치(Master, Replica)와 Shard Key, 노드별 크기 비중 |
| 레이아웃 | 실시간 조회 버튼을 클릭하면 테이블 레이아웃 정보를 조회 |
쏠림 배수는 가장 큰 파티션이 평균의 몇 배인지를 1.50x 형식으로 나타냅니다. 1.5배 이상이면 주황색, 2배 이상이면 빨간색으로 표시합니다. 행 수가 1만 미만인 테이블은 N/A, 파티션을 하나만 쓰는 테이블은 —로 표시합니다.
컬럼스토어 단편화 추이
SingleStore는 Columnstore 데이터를 세그먼트로 관리하고, 백그라운드 머저가 작은 세그먼트를 합칩니다. 머저의 처리 속도가 INSERT 속도보다 느리면 세그먼트 그룹 수가 증가해 조회 성능이 떨어집니다.
- 차트는 클러스터의 세그먼트 그룹 합계를 오늘과 비교일로 나란히 표시합니다. N일 전(1 ~ 30일, 기본 1일)에서 비교일을, 최대값 또는 평균값(기본 최대값)에서 집계 방식을 선택하세요.
- 세그먼트 그룹 수 Top 5 표에 세그먼트 그룹이 많은 테이블 5개가 표시됩니다. 파티션당 최대가 3 이상이면 주황색, Δ24h가 증가하면 빨간색, 감소하면 녹색으로 표시합니다. 행을 클릭하면 테이블 상세 드로어가 열립니다.
세그먼트 그룹 수가 계속 증가하면 해당 테이블에 OPTIMIZE TABLE을 실행할지 검토하세요.