读取文件和将内容插入数据库的性能

时间:2011-05-09 21:00:04

标签: c# wcf performance

我正在开发一个非实时的系统,但在最终用户机器和数据库之间有一个介入的独立服务器。这个想法是,每次用户发送内容时,不是为数据库服务器负担,而是数据库机器上的Windows服务定期扫描中继服务器并更新数据库,删除中继盒上的临时文件。

有一种情况是,安装在数千台计算机上的客户端软件几乎同时发送信息。以下是正确的:

  • 上述情况不会经常发生,但可能每隔一周发生一次。
  • 对于每台机器,在中继服务器上写入24字节的数据(磁盘上为4k),然后我们要接收并更新数据库。因此,如果用户群现在只有几千个就可以了,但是加时可能达到数百万。

我在想一个批处理操作,它一次只能获取大约15,000 - 20,000个文件并且每次都运行(可以从app.config修改)。问题是,如果用户群增长到几百万,那将需要数天才能完成。是的,它不一定是实时信息,但等待所有数据到达数据库的天数也不理想。

我认为如果继电器盒受到重创,总会有瓶颈,但有没有更好的方法来提高性能并在合理的时间(一天,两个顶部)获取数据?

此致 F.

1 个答案:

答案 0 :(得分:0)

我认为您可能会考虑避免锤击磁盘只有一个线程读取文件,然后将处理交给多个线程写入数据库并返回磁盘线程以在提交后删除文件。 DB线程的数量可以“从app.config修改”以找到硬件配置的最佳值。

只需2美分即可让你思考。