LabHub
배우기 러닝패스 코스

ClickHouse — 열 지향 분석 DB 를 속까지 · 파트와 병합 · 퀴즈

퀴즈: 파트·병합·TOO_MANY_PARTS

LabHub 에서 이어서 보기

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

  1. system.parts 에 `all_4_9_2` 라는 활성 파트가 있다. 이 이름에서 읽을 수 있는 것은?

    1. 4번째 파티션의 9번째 파트이며 2번 복제됐다
    2. 블록 4–9 를 덮고, 병합을 거쳐 수준 2 가 된 파트다
    3. 4행부터 9행까지 들어 있고 열이 2개다
    4. INSERT 4번과 병합 9번을 거쳐 2번째로 만들어졌다
  2. `SYSTEM STOP MERGES t` 를 한 뒤 `OPTIMIZE TABLE t FINAL` 을 쳤다. 26.8 실습 파드에서 일어난 일은?

    1. Cancelled merging parts(ABORTED)로 거절됐다
    2. OPTIMIZE 는 수동 명령이라 멈춤과 무관하게 합쳐졌다
    3. 병합이 예약만 되고 START MERGES 때 자동으로 실행됐다
    4. 파트 수는 그대로인데 수준만 1 오른 이름이 됐다
  3. 100만 행을 INSERT ... SELECT 한 번으로 넣었는데 part_log 에 NewPart 가 4줄 생겼다. 원인은?

    1. 표에 파티션 키가 네 개라서
    2. max_threads 가 4 라서 스레드마다 파트를 하나씩 썼다
    3. 블록 크기 설정(min_insert_block_size_rows)이 작아 블록 넷으로 잘렸다
    4. INSERT 가 실패해 세 번 다시 시도했다
  4. parts_to_throw_insert 를 5 로 낮추고 병합을 멈춘 표에 한 행씩 넣었다. 여섯 번째 INSERT 가 TOO_MANY_PARTS 로 거절됐을 때 가장 알맞은 복구는?

    1. parts_to_throw_insert 를 3000 으로 올려 다시 넣는다
    2. 거절된 INSERT 를 성공할 때까지 짧은 간격으로 계속 다시 보낸다
    3. 표를 TRUNCATE 하고 여섯 행을 다시 한 행씩 넣는다
    4. 병합을 켜고 OPTIMIZE 로 파트를 줄인 뒤 그 행을 다시 넣는다
  5. 26.8 기본값(async_insert = 1, wait_for_async_insert = 1)에서 셸 반복문으로 INSERT ... VALUES 를 하나씩 5번 보냈더니 파트가 5개 생겼다. 왜 하나로 모이지 않았나?

    1. VALUES 형식에는 비동기 INSERT 가 적용되지 않는다
    2. 각 INSERT 가 버퍼가 비워질 때까지 기다려, 버퍼에 늘 하나씩만 있었다
    3. 비동기 INSERT 는 표마다 파트를 최소 5개 만든다
    4. query_log 가 켜져 있으면 비동기 INSERT 가 꺼진다
  6. 같은 이름으로 표를 지웠다가 다시 만들어 실습을 반복했더니 part_log 의 NewPart 수가 두 배로 보였다. 지금 표의 기록만 세는 방법은?

    1. event_date 를 오늘로 거른다
    2. TRUNCATE TABLE system.part_log 로 기록을 비운다
    3. table_uuid 를 system.tables 의 지금 uuid 로 거른다
    4. part_name 이 _0 으로 끝나는 줄만 센다