手头的技术包括:
我正在对一些软件进行性能优化,有一个特定问题导致了严重的减速。使用约43个ADDED实体的EF DataContext时,DataContext.SaveChanges()方法需要花费大量时间。使用SQL Profiler,我可以看到插入操作的持续时间大约为0ms,这是预期的。使用ANTS Profiler,我可以看到DataContext.SaveChanges()需要大约1500ms。深入研究后,其中99.9%的时间都花费在SNINativeMethodWrapper.SNIReadSyncOverAsync内部。使用谷歌搜索,几乎没有有用的结果(因此提出这个问题)。长时间以来,我第一次发现自己要查看谷歌搜索结果页面2及以下(未知领域!)。在SO上有几个问题涉及此方法,但来自不同的上下文:
有人能提供代码更改的建议来解决或避免此问题吗?
- C# .NET 4.0
- SQL Server 2014
- Entity Framework 4.3.1
- Code First
- ANTS Performance Profiler 7
- SQL Server 2014 Profiler 2
- Google 搜索
我正在对一些软件进行性能优化,有一个特定问题导致了严重的减速。使用约43个ADDED实体的EF DataContext时,DataContext.SaveChanges()方法需要花费大量时间。使用SQL Profiler,我可以看到插入操作的持续时间大约为0ms,这是预期的。使用ANTS Profiler,我可以看到DataContext.SaveChanges()需要大约1500ms。深入研究后,其中99.9%的时间都花费在SNINativeMethodWrapper.SNIReadSyncOverAsync内部。使用谷歌搜索,几乎没有有用的结果(因此提出这个问题)。长时间以来,我第一次发现自己要查看谷歌搜索结果页面2及以下(未知领域!)。在SO上有几个问题涉及此方法,但来自不同的上下文:
- snireadsyncoverasync-performance-issue
- snireadsyncoverasync-and-waitforsingleobject-blocking-ef-performance
- 升级EF到V6+(或任何其他版本)
- 远离CodeFirst
- 不使用DataContext.SaveChanges()
- 重新设计软件
Context.Configuration.ValidateOnSaveEnabled = false;
Context.Configuration.AutoDetectChangesEnabled = false;
有人能提供代码更改的建议来解决或避免此问题吗?
INSERT
操作都返回为0。现在我又重新进行了分析,这次它们的返回时间在15到60毫秒之间。平均值约为33毫秒,它们总共需要约1,400毫秒的时间。所以看来这就是我的问题所在。数据库太大了,再加上人为错误!把你的评论写成答案,这个问题就归你了... - Paul Fleming