C# Linq到SQL和多CPU性能
我对LINQtoSQL的处理器性能和多线程处理有疑问 考虑以下简单代码,该代码从表中选择项以在第二个表中创建新条目(我知道有更好的方法,这只是一个示例): 我尝试在我的工作站上执行此示例,输入了大约50000条。花了大约32秒/32秒 我试图在一个强大的prod服务器上的同一个数据库上执行相同的代码,花了54秒 实际上,我做了几个测试,结果如下:C# Linq到SQL和多CPU性能,c#,performance,linq-to-sql,parallel-processing,cpu,C#,Performance,Linq To Sql,Parallel Processing,Cpu,我对LINQtoSQL的处理器性能和多线程处理有疑问 考虑以下简单代码,该代码从表中选择项以在第二个表中创建新条目(我知道有更好的方法,这只是一个示例): 我尝试在我的工作站上执行此示例,输入了大约50000条。花了大约32秒/32秒 我试图在一个强大的prod服务器上的同一个数据库上执行相同的代码,花了54秒 实际上,我做了几个测试,结果如下: 英特尔酷睿2双核E8400@3.00GHz:~32s 英特尔酷睿I5-3320M@2.60GHz:~32s 英特尔酷睿I5-2400@3.10GHz
- 英特尔酷睿2双核E8400@3.00GHz:~32s
- 英特尔酷睿I5-3320M@2.60GHz:~32s
- 英特尔酷睿I5-2400@3.10GHz:~33s
- 英特尔至强E5620@2.40GHz:~47s
- 英特尔至强E5-26400@2.50GHz:~52s
如果您能帮助我:)对不起,我的英语不好。Linq to SQL生成一个SQL查询并将其发送到SQL数据库。SQL查询分析器采用并行性。因此,您需要忘记LINQ to SQL,获取它正在生成并运行的SQL,检查不同环境中的执行计划。也许生产服务器更繁忙-我真的认为在这种情况下CPU不是一个真正的问题。表和磁盘IO中的插入影响更大。生产数据库是否有更多数据?更多索引?Linq-2-sql用于这样的批插入时效率非常低。基本上,它将为每条记录生成一个“插入…”,而基于集合的插入只为答案生成一个.thx。我很确定这是CPU问题,因为prod服务器是全新的,没有任何其他数据库。我认为问题在于我只能使用单进程,我的工作站和prod服务器之间的区别在于频率(2,5GHz vs 3,0GHz),即使我的prod服务器更强(多心脏…),我的结果也更差。。。
var db = new BaseDataContext(connectionString);
var query = from i in db.MyTable
select i;
foreach (item in query)
db.MySecondTables.InsertOnSubmit(new MySecondTable { id = item.id });
db.SubmitChanges();