如果我使用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
一秒鐘聽起來太長了。比我測量的時間長得多。在一個簡單的測試,我只是做了:
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();
}
我可以在每毫秒的1〜2個項目在6000個批次的速度插入,這仍然是相當穩定的數據量持續增長。如果我將它更改爲較小的批次(如說5個項目),那麼它會下降到每個項目大約10毫秒,因爲在初始化datacontext時存在相當多的開銷,並且支配執行時間。
所以必須有別的事情正在進行。你能否提供一些你正在插入的細節?也許是一個代碼示例,它演示了問題的端到端?
** 0%零投票**,也許你需要接受你的問題的答案 – V4Vendetta
首先在手機上,爲什麼你要一次加載或更改6000項,你違背設計原則在手機上製作輕量級高響應應用程序。有必須應用分頁和陰影的概念。 –