DataContext DB를 사용하여 많은 양의 데이터를 저장하는 경우. 데이터 수가 증가하면 성능이 매우 느려질 것입니다.DataContext 데이터 수가 큰 경우 성능이 좋지 않음
데이터 개수는 약 6000 레코드입니다.
하나의 데이터와 SubmitChange를 삽입하면 SubmitChange 비용이 1.X 초가됩니다.
성능을 향상시킬 방법이 없습니까? 아니면 제한 사항입니까?
고마워요.
DataContext DB를 사용하여 많은 양의 데이터를 저장하는 경우. 데이터 수가 증가하면 성능이 매우 느려질 것입니다.DataContext 데이터 수가 큰 경우 성능이 좋지 않음
데이터 개수는 약 6000 레코드입니다.
하나의 데이터와 SubmitChange를 삽입하면 SubmitChange 비용이 1.X 초가됩니다.
성능을 향상시킬 방법이 없습니까? 아니면 제한 사항입니까?
고마워요.
직접 테스트하지 않았지만 각 삽입 후에 SumbitChanges()
으로 전화하지 않으려 고합니다. 6000 개의 삽입물을 모두 수행 한 다음 SubmitChanges()
을 한 번만 호출하십시오. DataContext
은 변경 한 사항을 모두 알고 있어야합니다.
var _db = new YourDbContext();
for(int i = 0; i < 6000; i++)
{
FoobarObj newObject = new FoobarObj()
{
Name = "xyz_" + i.ToString();
};
_db.FoobarObjects.InsertOnSubmit(newObject);
}
_db.SubmitChanges();
내 케이스가 망고 WP7에 있습니다 ... AP가 10 초 이상 수행 할 수없는 것과 같은 제한 사항이 있습니다. 너무 많은 데이터를 축적하면 submitChange 비용이 매우 오래 소요됩니다. 당신이 제공하는 코드를 사용해도, 5000을 넘는 데이터 번호는 하나의 데이터를 삽입하는데 약 1 초의 비용이 소요됩니다 ..... 너무 느립니다. – user588477
1 초는 너무 길게 들립니다. 내가 측정 한 것보다 훨씬 오래.
using(var dc = new MyDc(@"isostore:/stuff.sdf"))
{
if(!dc.DatabaseExists())
dc.CreateDatabase();
dc.Data.InsertAllOnSubmit(
Enumerable.Range(0, 6000).Select(i => new MyData { Data = "Hello World" }));
dc.SubmitChanges();
}
나는 6000 개 일괄 MS 당 1 ~ 2 항목의 속도로 삽입 할 수 있으며, 데이터 크기가 성장을 계속하는이 꽤 안정 유지 : 사소한 테스트에서 그냥했다. 작은 배치 (예 : 5 개 항목)로 변경하면 항목 당 약 10 밀리미터로 떨어집니다. 왜냐하면 datacontext를 초기화하는 데 소요되는 오버 헤드가 상당히 많아서 실행 시간을 지배하기 때문입니다.
그래서 다른 일이 계속되어야합니다. 삽입하려는 내용에 대해 자세히 설명해 주시겠습니까? 아마 문제를 끝까지 보여 주는 코드 샘플일까요?
** 0 % 투표 수는 ** 어쩌면 질문에 대한 답변을 수락해야합니다. – V4Vendetta
먼저 전화로 6000 개의 항목을 한꺼번에로드하거나 변경해야하는 이유는 무엇입니까? 모바일에서 경량 고 반응 애플리케이션 구현. 적용되어야하는 페이징 및 해칭 개념이 있습니다. –