문제 해결

이 페이지에서는 Datastore 모드의 Firestore를 사용해서 문제를 해결하는 방법을 보여줍니다.

지연 시간

아래 표에서는 늘어난 지연 시간의 가능한 원인을 설명합니다.

지연 시간 원인 영향을 받는 작업 유형 해결 방법
500-50-5 규칙을 초과하는 지속되는 트래픽 읽기, 쓰기

빠르게 증가하는 트래픽을 위해 Datastore 모드는 수요 증가에 맞게 자동 확장을 시도합니다. Datastore 모드가 확장되면 지연 시간 감소가 시작됩니다.

핫스팟(좁은 항목 범위로의 높은 읽기, 쓰기, 삭제 속도)은 Datastore 모드의 확장 기능을 제한합니다. 규모 확장을 위한 설계를 검토하고 애플리케이션의 핫 스팟을 식별합니다.

단일 항목을 너무 자주 업데이트하거나 트랜잭션으로 인한 경합 읽기, 쓰기

개별 항목에 대한 쓰기 속도를 줄이세요.

트랜잭션 격리 및 일관성과 트랜잭션 사용 방법을 검토합니다.

병합-조인 쿼리가 느립니다. read 예를 들어 동등 필터가 여러 개(==) 있지만 복합 색인이 지원되지 않는 쿼리의 경우 병합-조인 쿼리가 느려질 수 있습니다. 성능을 개선하려면 이러한 쿼리에 복합 색인을 추가합니다. 자세한 내용은 색인 최적화를 참조하세요.
많은 항목을 반환하는 대형 읽기 read 쿼리 커서를 사용하여 대량 읽기를 분할합니다.
최근 삭제가 너무 많습니다. 읽기
데이터베이스에서 종류를 나열하는 작업에 큰 영향을 줍니다.
너무 많은 최근 삭제로 인해 지연 시간이 발생한 경우 잠시 기다리면 문제가 자동으로 해결됩니다. 문제가 해결되지 않으면 지원팀에 연락하세요.
특히 배열 속성의 경우 색인 팬아웃 write 과도 색인과 배열 속성 사용을 검토합니다.

오류 코드

이 섹션에서는 발생할 수 있는 문제를 나열하고 각 문제를 해결하는 방법을 제안합니다.

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

이 문제를 해결하려면 지연 시간 문제 해결 가이드를 참조하세요.

ABORTED

다음과 같은 경우 ABORTED 오류가 증가할 수 있습니다.

  • 초당 너무 많은 업데이트를 수신하는 항목
  • 겹쳐진 트랜잭션이 경합하는 경우
  • 트래픽이 500-50-5 규칙을 초과하거나 핫 스팟이 발생하는 경우
ABORTED

Too much contention on these datastore entities. Please try again.

또는

ABORTED

Aborted due to cross-transaction contention. This occurs when multiple
transactions attempt to access the same data, requiring Datastore mode
to abort at least one in order to enforce serializability.

이 문제를 해결하려면 다음 안내를 따르세요.

  • 빠르게 증가하는 트래픽을 위해 Datastore 모드는 수요 증가에 맞게 자동 확장을 시도합니다. Datastore 모드가 확장되면 지연 시간 감소가 시작됩니다.
  • 핫스팟은 Datastore 모드의 확장 기능을 제한하므로 핫스팟을 식별하기 위해 확장을 위한 설계를 검토합니다.
  • 트랜잭션의 데이터 경합 및 트랜잭션 사용량을 검토합니다.
  • 개별 항목에 대한 쓰기 속도를 줄이세요.

RESOURCE_EXHAUSTED

다음과 같은 경우 RESOURCE_EXHAUSTED 오류가 발생할 수 있습니다.

무료 계층 할당량이 초과되었고 프로젝트에 결제가 사용 설정되지 않았습니다.

RESOURCE_EXHAUSTED

Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.

이 문제를 해결하려면 다음 안내를 따르세요.

INVALID_ARGUMENT

다음 경우에 INVALID_ARGUMENT 오류가 발생할 수 있습니다.

  • 1,500바이트보다 큰 색인 생성된 속성 값으로 항목을 커밋하려고 시도합니다. 이 한도는 속성 값의 UTF-8 인코딩에 적용됩니다.
  • 1,048,487바이트(1MiB - 89바이트)보다 큰 색인이 생성되지 않은 속성 값으로 항목 커밋을 시도합니다. 이 한도는 항목의 속성 값 합계에 적용됩니다. 예를 들어 각각 256KiB인 속성이 4개이면 한도가 초과됩니다.

속성 값의 한도는 색인이 생성된 경우 1,500바이트, 색인이 생성되지 않은 경우 1,048,487바이트입니다. 이 한도는 초과될 수 없으며 조정 가능한 할당량이 아닙니다.

INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes

또는

INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes

이 문제를 해결하려면 다음 안내를 따르세요.

  • 색인 생성된 속성 값의 경우 속성을 여러 속성으로 분할합니다. 가능한 경우 색인이 생성되지 않은 속성을 만들고 색인을 생성할 필요가 없는 데이터를 색인이 생성되지 않은 속성으로 이동합니다.
  • 색인이 생성되지 않은 속성 값의 경우 속성을 여러 속성으로 분할하거나 속성 값에 대한 압축을 구현합니다.