Microsoft SQL 데이터베이스에서 Elasticsearch로 데이터를 이동하려고합니다. 나는 모델을 생성하기 위해 EF 6 (데이터베이스에서 코드 우선)을 사용하고 객체를 Elasticsearch로 직렬화하기 위해 NEST를 사용하고있다.C# 큰 데이터 집합 serializer
지연로드를 사용하면 제대로 작동하지만 느리게 전송되므로 느리게 사용할 수 없습니다.
public MyContext() : base("name=MyContext")
{
this.Configuration.LazyLoadingEnabled = false;
}
그리고 다음과 같이 일렬 : :이 줄을 추가하여 열망로드로 전환하면
ElasticClient client = new ElasticClient(settings);
var allObjects = context.objects
.Include("item1")
.Include("item2")
.Include("item2.item1")
.Include("item2.item1.item");
client.IndexMany(allObjects);
직렬화가로드하여, 그래서 그냥 (일어나기 전에 내가하는 System.OutOfMemoryException을 받고 결국 데이터). 약 2.5GB의 사용 가능한 메모리가 있으며 데이터베이스에 약 110.000 개의 항목이 있습니다.
데이터 정렬을 시도한 다음 한 번에 일정량의 개체를 직렬화하기 위해 건너 뛰기 및 가져 오기를 시도했지만 메모리가 부족하기 전에 Elasticsearch에 60.000 개의 개체 만 삽입 할 수있었습니다. 특정 양의 객체를 Elasticsearch에 삽입 한 후에도 가비지 수집기가 메모리를 충분히 확보하지 못하는 것처럼 보입니다.
Eager가 특정 개수의 객체를로드 할 수있는 방법이 있습니까? 대형 데이터 집합을 직렬화하는 또 다른 접근법은 무엇입니까?
체크 아웃 'GC.AddMemoryPressure()' – Sam
힌트에 진심으로 감사드립니다. 불행히도 내 응용 프로그램에서 메모리 사용에 영향을 미치지 않는 것 같습니다. – andreasnauta