LabHub
배우기 러닝패스 코스

ClickHouse — 열 지향 분석 DB 를 속까지 · 파티션 · 퀴즈

퀴즈: 파티션 가지치기와 파티션 조작

LabHub 에서 이어서 보기

6문항. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. PARTITION BY toYYYYMM(ts) 표에서 8월 범위로 걸렀더니 EXPLAIN 의 Min-Max 단계에 `Parts: 1/3` 이 나왔다. 무엇을 뜻하나?

    1. 파트마다 적힌 ts 최솟값·최댓값으로 8월과 겹치지 않는 두 파트를 열지 않았다
    2. 파티션 세 개 중 하나가 손상돼 읽지 못했다
    3. 정렬 키 인덱스가 그래뉼 3개 중 1개를 골랐다
    4. OPTIMIZE FINAL 이 파트 셋을 하나로 합쳤다
  2. 같은 정렬 키 (region, ts) 로 파티션 있는 표와 없는 표를 만들어 8월 쿼리를 돌렸더니 505,454행 대 581,632행을 읽었다. 여기서 얻을 결론은?

    1. 파티션이 없으면 8월 쿼리는 전체 150만 행을 읽는다
    2. 파티션 없는 표에서도 정렬 키가 대부분을 건너뛰어, 파티션의 이득은 작다
    3. 파티션 있는 표가 늘 더 적게 읽으므로 날짜 파티션을 더 잘게 나눠야 한다
    4. 파티션 없는 표는 PREWHERE 를 쓰지 못해 더 읽는다
  3. 7월을 `ALTER TABLE ... DELETE WHERE toYYYYMM(ts) = 202607` 로 지웠더니 part_log 에 MutatePart 가 3번 찍혔다(파티션 셋). 왜 7월이 없는 파트까지인가?

    1. DELETE 가 실패해 세 번 다시 시도했다
    2. 파티션마다 복제본이 있어서 각각 지웠다
    3. 뮤테이션은 표의 파트 전체를 대상으로 새 버전을 만든다
    4. mutations_sync = 1 이 모든 파트를 강제로 다시 쓰게 한다
  4. `DETACH PARTITION 202609` 뒤 `ATTACH PARTITION 202609` 를 했더니 파트 이름이 202609_3_4_1 에서 202609_5_5_0 이 됐다. 옳은 설명은?

    1. 다시 붙은 파트가 새 블록 번호를 받았다
    2. ATTACH 가 파트를 처음부터 다시 INSERT 했다
    3. DETACH 가 파트를 압축 해제해 수준이 0 이 됐다
    4. detached 디렉터리에 있던 동안 병합이 한 번 더 일어났다
  5. `ALTER TABLE b ATTACH PARTITION 202607 FROM a` 를 실행한 뒤 두 표의 상태는?

    1. a 의 7월이 b 로 옮겨지고 a 에서는 사라진다
    2. b 에 7월이 INSERT 쿼리로 다시 쓰여 query_log 에 Insert 가 남는다
    3. a 는 그대로, b 는 7월이 비어 있고 detached/ 에만 들어간다
    4. a 는 그대로 두고 b 에 7월 파트가 복사된다
  6. PARTITION BY (toDate(ts), region) 표에 석 달치를 한 번에 넣었더니 오류 252 로 한 행도 들어가지 않았다. 가장 나은 대응은?

    1. max_partitions_per_insert_block 을 1000 으로 올린다
    2. 하루치씩 나눠 92번 INSERT 한다
    3. 파티션 키를 월 같은 굵은 단위로 바꾸고 날짜·지역은 정렬 키로 거른다
    4. region 을 LowCardinality 가 아닌 String 으로 바꾼다