我有一个大的循环,更新2,800,000条记录访问数据库,我把循环分成7个线程,因此每个线程在400,000条记录上工作,循环大约需要0.7秒来更新一条记录因为有很多计算需要完成。访问数据库上的VB.NET多线程
我确定这些线程有助于使进程更快,因为我测试了7200RPM HDD和SSD以及ramdisk上的应用程序,速度差别并不明显,所以IO不是瓶颈。
我想第一个线程处理第一个400k记录和第二个线程来处理下一个400k记录等等。
- 什么是正确的方法来做到这一点?
- 是否每个线程都有自己的数据表和绑定源?
- 如何将结果合并到一个表中,并在流程完成时将其显示在datagridview中?
这是一次性操作吗?如果是这样,为什么要编写一个线程方法呢?如果不是,如果您必须定期更新280万条数据库记录,是否会成为糟糕设计的暗示?如果不是,可能Access首先使用的是错误的技术?无论如何,这个问题表明与线程访问数据库不同的问题。 – Tomalak 2012-08-11 12:36:08
手术每3个月进行一次 – user1590636 2012-08-11 12:37:40
我之前的评论中还有其他一些问题,请谨慎回答?另外:是一个集操作('UPDATE Table SET Field = CalculatedValue()')不可能?请注意,您可以在Access SQL语句中使用VBA中的用户定义函数。此外:需要多长时间*现在*?请注意,使用七个线程不会将速度提高七倍。 – Tomalak 2012-08-11 12:42:11