DataContext数据量大时,性能较差
本文关键字:性能 数据 DataContext | 更新日期: 2023-09-27 18:10:26
如果我使用DataContext DB存储大量数据。我发现当数据量增加时,性能会变得非常非常慢。
数据数约为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( );
一秒钟听起来太长了。比我测量的要长得多。在一个简单的测试中,我刚刚做了:
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批中以每毫秒1~2项的速度插入,并且随着数据大小的持续增长,这保持相当稳定。如果我把它改为更小的批处理(比如5个项目),那么它就会下降到每个项目大约10ms,因为在初始化数据上下文时涉及到相当多的开销,这支配了执行时间。
所以一定有别的事情在发生。你能详细介绍一下你要插入的东西吗?也许是一个从头到尾演示问题的代码示例?