【发布时间】:2011-07-13 08:09:00
【问题描述】:
场景 - 数据库中有大量数据。实用程序使用 datareader 逐一读取记录并附加到 txt/xml 文件。最初用于读取一条记录的实用程序,将其写入文件;然后我对其进行了更改,以便读取大约 10k 条记录并将其放入内存(字符串生成器),然后刷新到文件等等。时间缩短非常棒。
所以,我猜文件 I/O 是瓶颈。我想进一步改进它。考虑使用某种缓冲区,然后使用一个线程从 DB 读取并放入缓冲区,另一个线程从缓冲区获取并写入文件。
有没有可能。从哪儿开始? 有更好的选择吗?
【问题讨论】:
-
首先——读取数据的速度有多快,写入数据的速度有多快?您当前的吞吐量是多少?
-
大约 40 万条记录 - 读取单条记录,写入文件(耗时 - 6 分钟), - 读取 10k 条记录,写入文件(耗时 - 1 分钟 40 秒), - 读取 20k 条记录,写入归档(耗时 - 1 分 50 秒)
-
读取两倍的记录速度稍慢 - 有趣。那里一定有很大的设置成本。
标签: .net asp.net visual-studio file-io