색인 키의 히트맵 패턴

이 페이지에서는 Key Visualizer 히트맵에 표시될 수 있는 패턴 예시를 설명합니다. 이러한 패턴은 특정 성능 문제를 해결하는 데 도움이 될 수 있습니다.

고르게 분산된 사용량

고르게 분산된 읽기 및 쓰기를 보여주는 히트맵

히트맵에 밝고 어두운 색상이 고운 결로 혼합되어 표시되는 경우에는 데이터베이스 전반에서 색인 키의 쓰기/삭제 작업이 고르게 분산된 것입니다. 이 히트맵은 Datastore 모드의 효과적인 사용 패턴을 나타냅니다.

순차 키의 색인

밝은 대각선 하나가 있는 히트맵은 타임스탬프와 같이 엄격하게 증가하거나 감소하는 키에 있는 색인을 나타낼 수 있습니다. 순차 키의 색인은 권장되지 않으며 핫스팟을 만들 수 있습니다. 부하 집중 시 해당하는 지연 시간이 길어질 수 있습니다.

색인에 있는 일반적인 핫스팟의 예시는 다음과 같습니다.

타임스탬프 증가로 인한 부하 집중

타임스탬프 증가로 부하 집중을 보여주는 히트맵

이 예시에서 밝은 대각선 하나가 있는 히트맵은 타임스탬프 속성에서 색인 쓰기/삭제 작업을 엄격하게 늘리거나 줄이는 데 사용하는 데이터베이스를 나타낼 수 있습니다.

속성 이름 증가로 인한 핫스팟

속서 증가로 인한 부하 집중을 보여주는 히트맵

이 예시에서 밝은 대각선 하나가 있는 히트맵은 자동 생성된 인보이스 번호와 같이 증분 속성에서 색인 쓰기/삭제 작업을 엄격하게 늘리거나 줄이는 데 사용하는 데이터베이스를 나타낼 수 있습니다.

부하 집중 문제를 식별하려면 Key Visualizer 도구를 사용하고 색인 키 구조를 이해하여 문제를 일으키는 색인을 결정하고 권장사항에 따라 이러한 색인을 제외합니다.

색인 키 구조 이해

Key Visualizer 도구에 표시되는 색인 키의 구조를 이해하기 전에 Datastore 모드의 색인에 대해 알아보세요.

다음 코드에서는 히트맵에서 영향을 받은 키 범위 위로 마우스를 가져가면 표시되는 색인 키 형식의 예시를 보여줍니다.

NAMESPACE: NS KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),`UserList`,1)
VALUES: (16500000000000001,'Alice')
ENTITY:KEY(PROJECT('PROJECT_ID'),NAMESPACE(''),`UserList`,1,`User`,5000000000000001)

각 항목의 의미는 다음과 같습니다.

  • NAMESPACE: 항목의 네임스페이스입니다.
  • KIND: 항목을 분류하는 항목의 종류입니다.
  • PROPERTIES: 항목과 관련된 속성입니다. __key__ 순서 속성은 기본 순서를 수정하는 색인 정의에서만 표시됩니다.
  • ANCESTOR: 데이터베이스 계층 구조에서 항목을 찾기 위한 선택적 상위 경로입니다.
  • VALUES: 각 속성의 값
  • ENTITY: 작업에서 업데이트된 항목의 ID입니다.

앞의 예시에서 PROPERTIES 값의 속성을 식별하여 영향을 받는 색인을 찾으세요.

색인을 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 Datastore 모드 색인 페이지로 이동합니다.

    Datastore 모드 색인으로 이동

    PROPERTIES 필드를 분석하여 색인 유형을 식별할 수 있습니다. 자세한 내용은 색인 키 예시를 참조하세요.

  2. 필터를 클릭하고 필드를 선택한 다음 필드 이름을 입력합니다.

    복합 색인의 경우 더 많은 속성을 추가하려면 OR 연산자를 사용합니다.

문제의 원인이 되는 색인을 식별한 후에 다음 솔루션을 사용할 수 있습니다.

  • 내장 색인: 색인이 해당 속성의 색인 항목을 유지하지 않도록 속성을 제외합니다. 자세한 내용은 제외된 속성을 참조하세요.
  • 복합 색인: 값이 단조 증가 또는 감소하는 필드가 색인 생성의 첫 번째 필드로 선택되지 않도록 하려면 index.yaml 파일의 색인을 수정하거나 색인을 삭제하세요. 자세한 내용은 index.yaml 정보를 참조하세요.

히트맵의 색인 키 항목 예시

유형 설명 예시
내장 색인 항목 Timestamp 속성에 대한 단일 속성 색인의 색인 항목이며 NS 네임스페이스의 내림차순으로 표시됩니다. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),사용자, 5000000000000001)
내장 색인 항목 기본 네임스페이스의 단일 속성 색인 색인입니다. NAMESPACE: ' '
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),사용자, 5000000000000001)
복합 색인 항목 상위 항목이 사용 설정되지 않은 내림차순에서 Timestamp 속성 및 Name 속성의 복합 색인에 대한 색인 항목 NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),사용자,5000000000000001)
상위 항목이 있는 복합 색인 항목 Timestamp 속성에 대한 복합 색인의 내림차순 항목(상위 항목이 사용 설정된 Name 속성 내림차순) NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: ASC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001)
__key__를 사용하는 복합 색인 항목 오름차순 Timestamp 속성 및 상위 항목이 사용 설정되지 않은 내림차순 __key__ 속성의 복합 색인에 대한 색인 항목. 색인 정의의 최종 속성으로 __key__를 사용하여 결과의 기본 순서를 변경할 수 있습니다. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: ASC, __key__ DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001)

다음 단계