我正在使用C#中的Oracle数据读取器处理数据,平均有大约10000行数据。有没有办法并行进行处理,以便每个CPU可以从同一个数据读取器读取下一行并将其写入同一个电子表格? 在顺序执行中,此过程大约需要10-15分钟,这是我的顺序代码。
OracleCommand cmd = new OracleCommand(select_query, connection);
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read()){
for(int i = 1; i <= reader.FieldCount; i++){
worksheet[counter, i] = reader.GetValue(i).ToString();
}
counter++;
}
最终结果是将所有行写入电子表格。 有人可以帮助我,因为我是并行编程的新手吗?提前谢谢。
答案 0 :(得分:0)
您的问题不在于数据阅读器。我通常会在几秒钟内通过数据读取器从Oracle中提取数十或数十万条记录(并且可以使用几种商业工具)。
指向数据库的链接限制了您的传输速度,或者您的电子表格API主导了整个操作。
我的建议是将阅读器循环与电子表格构建分开。
此建议是为了您可以单独跟踪时间。老实说,我认为您使用的电子表格API可能是瓶颈,因为我通常不会在将Oracle导出到Excel时具有这种性能。也许尝试使用不同的电子表格库。