DataContext数据量大时,性能较差

本文关键字:性能 数据 DataContext | 更新日期: 2023-09-27 18:10:26

如果我使用DataContext DB存储大量数据。我发现当数据量增加时,性能会变得非常非常慢。

数据数约为6000条记录。

如果我插入一个数据和SubmitChange, SubmitChange将花费1。X秒。

是否有办法提高性能,或者这是限制.....

谢谢。

DataContext数据量大时,性能较差

我没有自己测试,但尽量不要在每次插入后调用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,因为在初始化数据上下文时涉及到相当多的开销,这支配了执行时间。

所以一定有别的事情在发生。你能详细介绍一下你要插入的东西吗?也许是一个从头到尾演示问题的代码示例?