지연 시간 문제 해결
이 페이지에서는 Firestore의 지연 시간 문제를 해결하는 방법을 보여줍니다.
지연 시간
다음 표에서는 지연 시간이 늘어날 수 있는 원인을 설명합니다.
지연 시간 원인 | 영향을 받는 작업 유형 | 해결 방법 |
---|---|---|
500-50-5 규칙을 초과하는 지속되는 트래픽 | 읽기, 쓰기 |
빠른 트래픽 증가를 위해 Firestore는 늘어난 수요를 충족시키기 위해 자동으로 확장을 시도합니다. Firestore가 확장되면 지연 시간 감소가 시작됩니다. 핫 스팟(좁은 문서 범위에 대한 높은 읽기, 쓰기, 삭제 비율)으로 인해 Firestore의 확장 기능이 제한됩니다. 규모 확장을 위한 설계를 검토하고 애플리케이션의 핫 스팟을 식별합니다. |
단일 문서를 너무 자주 업데이트하거나 트랜잭션으로 인한 경합 | 읽기, 쓰기 |
개별 문서에 대한 쓰기 속도를 줄이세요. 트랜잭션의 데이터 경합 및 트랜잭션 사용 방법을 검토합니다. |
병합-조인 쿼리가 느립니다. | read |
예를 들어 동등 필터가 여러 개(== ) 있지만 복합 색인이 지원되지 않는 쿼리의 경우 병합-조인 쿼리가 느려질 수 있습니다.
성능을 개선하려면 이러한 쿼리에 복합 색인을 추가하세요. 자세한 내용은 Firestore 쿼리가 느린 이유는 무엇인가요?의 이유 #3을 참조하세요.
|
많은 문서를 반환하는 대형 읽기 | read | 페이지로 나누기를 사용하여 대량 읽기를 분할합니다. |
최근 삭제가 너무 많습니다. | 읽기 데이터베이스에서 컬렉션을 나열하는 작업에 큰 영향을 줍니다. |
너무 많은 최근 삭제로 인해 지연 시간이 발생한 경우 잠시 기다리면 문제가 자동으로 해결됩니다. 문제가 해결되지 않으면 지원팀에 연락하세요. |
리스너 추가 및 삭제가 너무 빠릅니다. | 실시간 리스너 쿼리 | 실시간 업데이트를 위한 권장사항을 참조하세요. |
대용량 문서 또는 결과가 많은 쿼리 리슨 | 실시간 리스너 쿼리 | 실시간 업데이트를 위한 권장사항을 참조하세요. |
특히 배열 필드 및 맵 필드의 경우 색인 팬아웃 | write | 배열 필드 및 맵 필드 사용량을 검토합니다. 맵 필드의 경우 색인 생성에서 하위 필드를 사용 중지할 수 있습니다. 수집 수준 예외를 사용할 수도 있습니다. |
대량 쓰기 및 배치 쓰기 | write |
각 배치 쓰기에서 쓰기 수를 줄여보세요. 배치 쓰기는 원자성 작업이며, 단일 배치의 여러 쓰기로 인해 지연 시간 및 경합이 늘어날 수 있습니다. 예를 들어 10번의 배치 쓰기는 500번의 배치 쓰기보다 성능이 높습니다. 원자성이 필요하지 않은 일괄 데이터 항목의 경우 동시에 로드되는 개별 쓰기와 함께 서버 클라이언트 라이브러리를 사용합니다. 일괄 쓰기의 성능은 직렬화된 쓰기보다 우수하지만 동시 로드 쓰기보다는 떨어집니다. |