将大量记录插入数据库
我需要对数据运行一些算法大量次并将每个结果存储在数据库中。
算法运行次数为80,000-90,000次,每个周期大约需要2秒(仅算法)。 所以这是非常耗时的。
我的数据库是SQL Server 2008。 我想使用 ado.net 实体框架(对于这个任务来说它好吗?它不好吗?)
现在输出数据(需要存储在数据库中)是普通的原始数据(不是很大),加上一些维护列,例如日期和时间。
最佳实践是什么?
当每个算法完成时逐行插入?将结果存储在内存中并在工作完成后插入数据?
I need to run some algorithms over data massive number of times and store each result in database.
Number of algorithm runs is 80,000-90,000, each cycle takes about 2 seconds (just the algorithm ).
So it's very time consuming.
My database SQL server 2008.
I want to use ado.net entity framework (is it good for this task it's not good?)
Right now the output data (that needs to be stored in DB) is plain raw (not very big), plus some maintain columns like date and time.
What is the best practice for that?
Insert row by row, as each algorithms completes? store the results in memory and after work is finished insert the data?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先对所有记录运行算法后,您不能尝试 BulkInsert 吗?
将数据输入数据库的效率非常高。
http://msdn.microsoft.com/en-us/library/ms188365.aspx
Could you not try BulkInsert after running your algorithm against all records first?
It is very efficient at getting the data into the database.
http://msdn.microsoft.com/en-us/library/ms188365.aspx
您可以使用 SqlBulkCopy 类并使用 DataTable 作为源数据。与多个 INSERT 相比,它确实很快。
You could use SqlBulkCopy class and use a DataTable as source data. It's realy fast compared with multiple INSERTs.
如果您没有使用 sqlbulkcopy,您可以执行以下操作:
In case you didn't use sqlbulkcopy, you could do next: