LabHub

PostgreSQL 심화 — 트랜잭션·인덱스·JSONB·파티션 · JSONB·파티션·유지보수 · 퀴즈

퀴즈: JSONB·파티션·유지보수

LabHub 에서 이어서 보기

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

  1. jsonb 문서에서 shipping.country 가 'JP' 인 주문을 세려 한다. 텍스트 값을 꺼내는 연산자는?

    1. doc->'shipping'->>'country' 로 마지막을 ->> 로 꺼낸다
    2. doc#>'shipping.country' 로 점 경로를 쓴다
    3. doc @> 'shipping.country' 로 담김을 본다
    4. doc ? 'shipping' 로 키 존재만 본다
  2. 자주 조회하는 doc->'customer'->>'tier' 값을 평범한 열처럼 인덱스하고 집계하고 싶다. 알맞은 방법은?

    1. 조회할 때마다 뷰에서 doc 를 열어 매번 다시 계산하게 둔다
    2. generated always as (...) stored 생성 열로 뽑아 저장한다
    3. 애플리케이션에서 tier 를 계산해 별도 표에 따로 넣어 관리한다
    4. doc 열 전체에 일반 B 트리 인덱스를 만들어 검색한다
  3. ts 로 RANGE 파티션한 표에서, 정의한 월 범위 어디에도 안 맞는 행은 어디로 가는가?

    1. 삽입이 거부되어 오류가 난다
    2. 가장 가까운 월 파티션에 강제로 들어간다
    3. DEFAULT 파티션이 있으면 거기로, 없으면 삽입이 거부된다
    4. 부모 표에 직접 저장된다
  4. WHERE ts >= '2025-02-10' AND ts < '2025-02-20' 질의가 2월 파티션만 스캔하고 나머지는 계획에서 빠졌다. 이 동작의 이름은?

    1. 인덱스 온리 스캔
    2. 비트맵 스캔
    3. 병렬 시퀀스 스캔
    4. 파티션 가지치기
  5. DEFAULT 파티션에 5월 데이터가 쌓였다. 5월 전용 파티션으로 옮기는 방법으로 알맞은 것은?

    1. 부모 표를 DROP 하고 처음부터 다시 만든다
    2. DEFAULT 를 떼고 5월 파티션을 붙인 뒤 5월 행을 옮기고 DEFAULT 를 다시 붙인다
    3. 5월 파티션을 만들면 DEFAULT 의 5월 행이 자동으로 옮겨진다
    4. 5월 행을 지웠다가 5월 파티션을 만든 뒤 다시 넣는다
  6. 한 컬럼만 UPDATE 했는데 표 크기가 커졌다. PostgreSQL 의 어떤 동작 때문인가?

    1. 행을 제자리에서 고치지 않고 새 버전을 쓴 뒤 옛 버전에 죽음 표시를 남긴다
    2. UPDATE 는 인덱스를 통째로 다시 만들기 때문에
    3. 숫자 컬럼이 커지면 행 전체가 큰 페이지로 옮겨지기 때문에
    4. UPDATE 가 WAL 을 표 안에 함께 저장하기 때문에
  7. n_dead_tup 이 큰데 VACUUM 을 돌려도 표가 안 줄어든다. 가장 그럴듯한 이유는?

    1. VACUUM 은 죽은 튜플을 실제로 지우지 못하고 표시만 한다
    2. 죽은 튜플이 인덱스에만 있고 표에는 없다
    3. 아직 열려 있는 오래된 트랜잭션이 그 옛 버전을 볼 수 있어 회수가 미뤄진다
    4. VACUUM FULL 이 아니면 통계만 갱신하고 아무것도 안 한다
  8. 어떤 질의가 서버 시간을 가장 많이 먹는지 알려주는 pg_stat_statements 를 켜려면?

    1. 세션에서 SET 한 번이면 즉시 켜진다
    2. CREATE EXTENSION 만 하면 재시작 없이 바로 쌓인다
    3. 슈퍼유저로 접속하면 자동으로 활성화된다
    4. shared_preload_libraries 에 넣고 서버를 재시작한 뒤 확장을 만든다