c# – 大量插入的LINQ-to-SQL性能问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 大量插入的LINQ-to-SQL性能问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1473字,纯文字阅读大概需要3分钟。
内容图文
![c# – 大量插入的LINQ-to-SQL性能问题](/upload/InfoBanner/zyjiaocheng/911/311c36e6d757441d9f98ab471e4ba75e.jpg)
我在我的申请中发现了一个问题;基本上,一个子例程准备(批量)数据,这些数据稍后通过LINQ-to-SQL数据上下文插入到我的本地数据库中.但是,当调用SubmitChanges()时,即使是相对适度数量的新数据(100,000-ish)也需要花费大量时间保存到数据库中.但是,大多数情况下,应用程序更有可能节省大约200,000到300,000行.
根据SQL Server的分析器,所有生成的查询看起来都如下所示,并且应用程序插入的每个项目都有一个查询.
exec sp_executesql N'INSERT INTO [dbo].[AdjectivesExpanded]([Adjective], [Genus], [Casus], [SingularOrPlural], [Kind], [Form])
VALUES (@p0, @p1, @p2, @p3, @p4, @p5)
SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]',N'@p0 bigint,@p1 char(1),@p2 tinyint,@p3 bit,@p4 tinyint,@p5 nvarchar(4000)',@p0=2777,@p1='n',@p2=4,@p3=0,@p4=3,@p5=N'neugeborener'
有没有人知道如何使用LINQ-to-SQL数据上下文提高大量插入的性能,理想情况下,没有摆脱stronlgy类型的DataContext并回退到手写查询本身?此外,调整底层数据库的机会或空间很小.如果有的话,我可以禁用完整性约束,如果有帮助的话.
解决方法:
你在做这样的事情:
foreach (var adjective in adjectives) {
dataContext.AdjectivesExpanding.InsertOnSubmit(adjective)
dataContext.SubmitChanges();
}
要么:
foreach (var adjective in adjectives) {
dataContext.AdjectivesExpanding.InsertOnSubmit(adjective);
}
dataContext.SubmitChanges();
如果它与第一个相似,我会建议将它改为第二个.每次调用SubmitChanges都会查看所有跟踪的对象,以查看更改的内容.
无论哪种方式,我都不相信插入那些项目是Linq-to-Sql的好主意,因为它每次都必须生成和评估SQL.
您可以编写存储过程的脚本并作为设计器的DataContext方法添加吗?
内容总结
以上是互联网集市为您收集整理的c# – 大量插入的LINQ-to-SQL性能问题全部内容,希望文章能够帮你解决c# – 大量插入的LINQ-to-SQL性能问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。