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);
...
}
------解决方案--------------------数据库查询线程越少越好....
多线程只会增加数据库负担,更慢.
------解决方案--------------------好像不行吧
如果是多台机器的话,或许还会提高点查询量