나는 서비스 패브릭 stateful 서비스에 신뢰할 수있는 사전 있습니다. 나는 간단한 linq 표현을 가지고있다.
asyncenumerable을 빌드하기 위해 1x-Async 패키지를 사용하고 있습니다. 하늘색 서비스 패브릭 신뢰할 수있는 사전 linq 쿼리 매우 느림
using (ITransaction tx = this.StateManager.CreateTransaction())
{
var result = (await customers.CreateLinqAsyncEnumerable(tx))
.Where(x => x.Value.NameFirst != null && x.Value.NameFirst.EndsWith(n, StringComparison.InvariantCultureIgnoreCase))
.Select(y => y.Value);
return await result.ToList();
}
이 데이터는 각 파티션에서 약 75,000 레코드와 파티션 (2)으로 구성된다. Int64 범위를 파티션 키로 사용하고 있습니다. 위의 코드에서 "Result.ToList()"는 각 파티션에 대해 약 1 분 정도 걸립니다. 또 하나의 결과는 비어 있습니다. SQL Server에서 실행되는 동일한 sql은 고객 이름이 "c"로 끝나는 행을 반환합니다. 그러나 이것은 요점 외에도 있습니다. 내 가장 큰 관심사는 "ReliableDictionary"linq 쿼리의 성능입니다.
감사합니다.
기록은 얼마나 큽니까? 어떤 하드웨어를 사용하고 있습니까? 당신은 로컬 dev 머신이나 실제 클러스터에서 측정을 했습니까? 같은 기계에있는 다른 서비스? 차이가 있는지 1x-Async 패키지를 사용하지 않고 열거하려고 시도 했습니까? –
표는 1 개의 이진 열 [그림]이 있다는 것을 제외하면 표준 표입니다.이것은 로컬 개발 클러스터입니다. 16GB의 RAM을 확보하십시오. 사전에 인서트가 빠르게 타 오릅니다. [분당 2000 건 정도]. Dictionary by Key (키 찾기)도 매우 빠릅니다. 나는 asyncenumerator를 사용하여 전체 75,000 레코드를 열거했고 술어를 적용했다. 여전히 약 50 초가 걸렸습니다. – teeboy
도움이 필요하시면 사진을 저장하는 것을 권장하지 않습니다. 일반적으로 이미지 파일의 URL을 blob 저장소 또는 다른 것으로 저장합니다. 대략 사진이 얼마나 큽니까? 항상 기억 속에 남아있는 것은 아닙니다. 기본적으로 당신이하고있는 일은 그 열거 중에 디스크에서 사진을 RAM으로 가져 오는 것입니다. 열거 시간에는 사진 데이터의 다른 처리도 포함됩니까? –