使用TPL在db调用中实现多线程

时间:2011-10-26 07:01:36

标签: task-parallel-library

在我正在处理的网络应用程序中,我要对数据库进行多次调用,并将结果最后组合在UI中显示。现在..我正在逐个进行调用并最终合并结果。由于网络应用程序将托管在多核机器(intel i5)中,我想我可以使用TPL进行并行数据库调用。这是个好主意吗?当我对db进行并行调用时,我想要考虑哪些事情/陷阱?

1 个答案:

答案 0 :(得分:1)

这里要记住两件事。首先,您提供的数据库API可能不是线程安全的,例如ADO.NET显然不是100%线程安全的。其次,通过这样做,您可以将负载从clinet移动到DB。换句话说,如果您的客户端同时创建到DB的5个并发连接,则会对DB的负载产生更大的影响。可以减少单个客户端对用户的延迟,但是以单个数据库可以支持的客户端数量为代价来降低整体吞吐量。

如果您认为这是一个很好的权衡,那么在很大程度上取决于您的情况。

你说“我们的应用程序”,如果你的意思是网络应用程序然后他们是类似的权衡,我建议这个博客文章从网络应用程序使用TPL。

http://blogs.msdn.com/b/pfxteam/archive/2010/02/08/9960003.aspx

这是同一个问题。您可以根据吞吐量交换单个请求延迟,反之亦然。