c# 多线程同时写数据表速度变慢的问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 22:46:01
读一个文本文件,并进行计算,完成后将计算结果分别写入到10个(假定)表中。
由于单个文本文件很大,约200M以上,计算需要比较长的时间,想通过多线程同时写10个表,以便节约时间。

以下是实现的方法:
数据读取: 循环读取文本文件,并将字段值放入到变量中

{
......
Thread thdTable1 = new Thread(into_table1);
thdTable1.Start();
thdTable1.Join();

Thread threadTable2= new Thread(into_table2);
thdTable2.Start();
thdTable2.Join();
......
}

//有10个线程同时运行

into_table1()
{
//计算...
//其间有通过reader判断重复等操作
//写入DB...
}

into_table2()
{
//计算...
//其间有通过reader判断重复等操作
//更新记录
}
.....

以上的方法比单线程执行还慢。
请大家帮忙看一下,以上方法存在的问题。

另外,如果有更好的实现方式,请不吝指教。

当然比单线程慢罗,单线程还一直在写,你多线程还要加上不断的切换线程的消耗。做同一件事情,多线程比单线程慢!
如果你是存入MSSQL的话,可以用个批量插入,效率会高很多。用里面提供的Bulk Insert

一般涉及网络、磁盘读写的程序采用多线程,计算过程使用多线程尚不划算。高性能并行计算使用c#不行。如果计算量大建议使用编译性语言(推荐使用FORTURN)。 .net属于半编译性平台,效率较低。

cpu的计算是有限的。你这样多线程反而加重了计算负担。
基本上没什么好办法。慢慢做吧
尽量优化下代码。还有数据库操作。

建议使用存储过程。。