|
|
1
3
分批阅读并分批插入。 |
|
|
2
2
使用探查器——找出时间的去向。 如果没有真正的探查器,请尝试以下操作:
我猜数据库将成为瓶颈。你应该考虑批量插入——如果你一次只插入一条记录,那可能比批量插入慢得多。 |
|
|
3
2
我在过去做过很多类似的应用程序,有很多方法可以用来优化。
|
|
4
2
为什么不直接使用Microsoft SQL Server Management Studio或命令行-SQLCMD将数据插入SQL Server数据库?它确实知道如何处理CVC文件。 数据库上的BulkInsert属性应设置为True。 如果必须修改,可以将其插入临时表,然后使用T-SQL应用修改。 |
|
|
5
1
最好的办法是尝试使用一个样本相对较小的分析器——这可以确定实际的滞留量在哪里。 |
|
|
6
0
将其加载到内存中,然后插入数据库。500万行不应该占用你的记忆。问题是,您实际上是在重击磁盘——读取CSV和写入DB。 |
|
|
7
0
我会像加速任何东西一样加速它:通过一个剖析器运行它,找出最长的时间是什么。 绝对没有办法猜测这里的瓶颈是什么——也许解析CSV文件的代码中有一个bug,导致多项式运行时?也许有一些非常复杂的逻辑用于处理每一行?谁知道呢! 此外,对于“记录”,500万行并不是那么重——我头脑中的一个猜测是,一个合理的程序应该能够在半小时内快速完成,一个好的程序应该用更少的时间完成。 最后,如果发现数据库是您的瓶颈,请检查每次插入后是否提交了事务。这可能会导致一些不寻常的减速。。。 |
|
|
8
0
不确定你在用它们做什么,但你考虑过perl吗?我最近重新编写了一个vb脚本,它也在做类似的事情——处理数千条记录——vb脚本的时间从大约一小时到perl大约15秒。 |
|
|
9
0
从文件中读取所有记录(我会一次读取整个文件,或以块的形式),然后使用SqlBulkCopy类将记录导入数据库。据我所知,SqlBulkCopy是导入记录块的最快方法。网上有很多教程。 |
|
|
10
0
正如其他人所建议的那样,首先对应用程序进行分析。 也就是说,您可能会从批量插入中获益。我使用的一款应用程序就是这样,它的影响力很大。 考虑500万次往返是非常多的,特别是如果每个都是一个简单的插入。 |
|
|
11
0
在类似的情况下,通过从一次插入一行切换到使用 SqlBulkCopy 应用程序编程接口。 有一篇好文章 here . |
|
|
12
0
您需要将数据大容量加载到数据库中,前提是它具有该功能。在Sql Server中,您会看到BCP、DTS或SSI——BCP是最古老的,但可能是最快的。如果在你的数据库中这是不可能的,在运行之前关闭所有索引,我猜是数据库导致了问题,而不是数据库。Net代码。 |
|
|
Mear1628 · vb.net从随机选择的端口号接收UDP 1 年前 |
|
|
user1946932 · .Net正则表达式在所有字符前添加空格 1 年前 |
|
|
user1946932 · 正则表达式:删除连续两个以上的<br>? 1 年前 |
|
|
Josh · 通过反思访问孩子的财产 1 年前 |
|
|
Khu RJ · 更新网格中的单元格-DevExpress网格控件 1 年前 |
|
|
Mick · VB.NET Regex。替换不起作用(数组未更新) 1 年前 |