DynamoDB를 사용하고 있습니다. 앱에서 스캔 작업을 수행합니다. 모든 것이 완벽하게 작동합니다. 언젠가 후에, 응답은 아무거나로오고있다. 하지만 예외는 없습니다. ","com.amazonaws.dynamodb.v20111205 번호의 ProvisionedThroughputExceededException를 "나는 자세한 로깅을 사용하는 경우Amazon DynamoDB ProvisionedThroughputExceededException (iOS SDK)
[AmazonLogger verboseLogging];
, 내가 좋아하는 일부 로그를 볼 수
"__type "을 사용하여 자세한 로깅을 사용 가능 메시지 ":"테이블의 구성 프로비저닝 처리량의 수준이 초과 된 UpdateTable API "
내 코드는 다음과 같습니다
,
0으로 프로비저닝 수준을 늘리는 것이 좋습니다.@try {
DynamoDBScanRequest *request = /* Create request */;
DynamoDBScanResponse *response = [[AmazonClientManager ddb] scan:request];
/*
* response is nil if the provisioning throughput is exceeded
* and the all retries are over
*/
ALog(@"Response: %@", response);
NSMutableArray *array = response.items;
return array;
} @catch (NSException *exception) {
/*
* I am expecting the ProvisionedThroughputExceededException
* to be thrown here. But its not throwing here. Instead I get the response
* as nil above.
*/
ALog(@"Exception: %@", exception);
return nil;
}
정확합니까? 누군가 제가 제발 도와 주실 수 있습니까?
감사합니다.
편집 : 사람이 나에게의 거친 아이디어를 줄 수 얼마나 많은 처리량 (모두 읽기/쓰기) 한 TopicID, QuestionID, 질문, 대답, AskedAt, RepliedAt 같은 거의 10 필드와 더불어, QuestionAnswer 테이블에 대해 설정하는 능력을, 질문 유형 등? 감사.
DynamoDB는 사용자가 구성한 프로비저닝 된 처리량을 기반으로 가격이 책정되며, 사용자가 설정 한 것보다 자주 액세스하며 조절됩니다. 실제로 테이블을 스캔 할 필요가 있는지 고려해야 할 필요가 있습니다. 스캔이 전체 테이블을 검사하여 높은 처리량을 얻습니다. 사용 된 첫 번째 NoSQL DB라면 사용법을 조사해야합니다. RDB와 같은 임시 쿼리를 수행 할 수 없으며 시간과 리소스 측면에서 비용이 많이 듭니다. 별도의 테이블로 명시 적 가져 오기를 허용하는 인덱스 관리를 고려하십시오. – codeghost
감사합니다. 스캔을 사용할 경우 @catch 블록에 예외가 던져 질 방법이 없다는 것을 의미합니까? – EmptyStack
로깅이 올바르게 구성되었는지 확인하기 위해 이전의 응답 ALog 메시지가 표시됩니까? catch에 중단을두면 catch가 트리거되기 전에 트리거되거나 try 블록에서 확실히 반환되지 않습니다. 필자는 Dynamo 용 AWS iOS SDK를 사용하지 않았지만 예상치 못한 성능을 보인 다른 API에 대한 경험이 있으므로 catch 블록을 입력하지 않으면 SDK가 이전에 예외를 삼키는 것일 수 있습니다. 전역 예외 처리기를 추가하여 거기에 어떤 것이 있는지 알아볼 가치가 있습니다. – codeghost