查询比较特殊,简化下语句的大概含义是Select * from Table where (col >=3000 and col <=3001) or(col >=3050 and col<=3055) or......
where条件非常长,基本相当于从千万级以上的数据库中,查询几百个区间段内的所有数据,实际业务要更复杂些,大概意思是这样,通过C#的线程池连接访问数据库,结果很多超时,该怎么办,正常如果只开几个线程应该不会超时的,感觉线程池疯了一样开线程,如果单线程只需要几秒就能返回结果,可是用了线程池,设置连接超时为1分钟以上都不行,感觉数据库完全吃不消
用的SQL2008
控制一下线程数:
对于线程池主要的控制有控制线程数大小:
ThreadPool.SetMaxThreads 方法
public static bool SetMaxThreads(
int workerThreads,
int completionPortThreads
)
参数:
workerThreads
类型:System.Int32
线程池中辅助线程的最大数目。
completionPortThreads
类型:System.Int32
线程池中异步 I/O 线程的最大数目。
这个任务我感觉应该从优化sql下手。
控制线程数不是解决问题的办法。控制了线程数结果是一样的, 很多客户端都不得不等。
这种超时肯定是sql执行时间太长了,
这种只是读取不多数据的都能超时只能说明sql执行效率太差了。