日期:2014-05-19  浏览次数:21320 次

C#多线程并发查询数据库,能实现真正的并发查询么??(毫秒级同时处理N个Select请求查询数据库)
SQL语句加了With(nolock),可用线程池并发查询SQL   Server的速度还没有单线程查询的快。而且看日志,最终查询数据库并没有并发执行。
问题:请问一台数据库的情况下,C#的线程池能实现真正的并发查询数据库么?(毫秒级同时处理N个Select请求查询数据库)
谢谢!

------解决方案--------------------
在ado.net 2.0中可用异步命令试试。为了启用异步命令必须在连接字符串中把Async属性设置为true,以下是一个异步操作的例子:
//Begin executing the command
IAsyncResult ar=cmd.BeginExecutereader(new AsyncCallback(ProcessData),cmd);

启动异步操作以后,可以不管它而做任何其他工作。在该操作结束时调用指定的回调函数。回调函数如下:
public void processData(IAsyncResult ar)
{
SqlCommand cmd=(SqlCommand)iar.AsyncState;
SqlDataReader reader=cmd.EndExecuteReader(iar);
...
}

------解决方案--------------------
数据库查询线程越少越好....

多线程只会增加数据库负担,更慢.
------解决方案--------------------
好像不行吧
如果是多台机器的话,或许还会提高点查询量