DynamoDB 테이블에 대한 글로벌 보조 인덱스를 생성하는 속도를 향상하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 24일

Amazon DynamoDB 테이블에 대해 글로벌 보조 인덱스(GSI)를 생성하려고 하는데 시간이 오래 걸립니다. 생성 프로세스의 속도를 높이려면 어떻게 해야 합니까?

간략한 설명

기존 테이블에 새 글로벌 보조 인덱스를 추가하면 IndexStatus가 CREATING으로 설정되고 Backfilling은 true로 설정됩니다. 채우기(Backfilling)는 테이블에서 항목을 읽고 인덱스에 추가할 수 있는지 확인하는 과정입니다. 글로벌 보조 인덱스 구축에 필요한 시간은 다음을 비롯한 여러 가지 요소에 따라 달라집니다.

  • 기본 테이블 크기
  • 테이블에서 인덱스에 포함 가능한 항목 수
  • 인덱스로 투사되는 속성 수
  • 인덱스에 프로비저닝된 쓰기 용량
  • 인덱스 생성 시 기본 테이블에서의 쓰기 작업
  • 인덱스 파티션 간의 데이터 분산

생성 프로세스의 속도를 향상하려면 인덱스에서 쓰기 용량 단위(WCU)의 수를 늘립니다.

해결 방법

OnlineIndexPercentageProgress Amazon CloudWatch 지표를 사용하여 인덱스 생성 프로세스를 모니터링합니다.

  1. DynamoDB 콘솔을 엽니다.
  2. 탐색 창에서 [테이블]을 선택한 다음, 목록에서 테이블을 선택합니다.
  3. [지표] 탭을 선택합니다.
  4. [모든 CloudWatch 지표 보기]를 선택합니다.
  5. 검색창에 OnlineIndexPercentageProgress를 입력합니다.
    참고: 검색에 결과가 반환되지 않으면 지표가 채워질 때까지 1분 정도 기다립니다. 그런 다음, 다시 시도하십시오.
  6. 진행 상황을 확인하려면 인덱스 이름을 선택합니다.

테이블 용량(KB)을 원하는 채우기 시간으로 나누어 추가로 필요한 WCU 개수를 결정합니다. 예를 들어 1GiB(1,074,000KB) 테이블이 있다고 가정해보겠습니다. 채우기 프로세스를 10분(600초) 내에 완료하려고 합니다. 필요한 WCU 수는 다음과 같습니다.

1,074,000 / 600 = 1,790 WCU

참고: 이는 추정치입니다. 생성 시간은 파티션 사이에 키를 분산하는 방식, 항목의 용량, 테이블에서 인덱스로 투사되는 속성 수 등에 따라 달라집니다.

추가 쓰기 용량을 프로비저닝하는 방법은 다음과 같습니다.

  1. DynamoDB 콘솔을 엽니다.
  2. 탐색 창에서 [테이블]을 선택한 다음, 목록에서 테이블을 선택합니다.
  3. [용량] 탭을 선택합니다.
  4. 인덱스의 쓰기 용량을 늘린 다음, [저장]을 선택합니다.
  5. 약 1분 후 OnlineIndexPercentageProgress 지표에서 생성 속도가 개선되었는지 확인합니다.