这不是关于优化SQL命令的问题。我想知道有什么方法可以确保SQL连接保持打开,并准备好尽可能有效地处理命令。
我现在看到的是,我可以执行一个SQL命令,该命令需要大约1秒,额外的执行将需要大约300ms。这是在先前针对SQL server (从另一个应用程序实例)执行命令之后...因此,在此应用程序首次执行之前,应为已执行的查询完全填充SQL缓存。只要我不断地重新执行查询,我就会看到大约300ms的时间,但如果我让应用程序空闲5-10分钟并返回,那么下一个请求将回到~1秒(与初始请求相同)。
有没有一种方法可以通过SqlConnection上的连接字符串或某些属性来指导框架保持连接的完整性,并为有效处理查询做好准备?
发布于 2009-07-03 09:45:53
你检查过你的过程的执行计划了吗?我相信执行计划被加载到服务器的内存中,然后在特定的时间段后清除,或者取决于过程中访问的表等。我们曾经遇到过这样的情况:简化存储过程(可能是拆分存储过程)会减少数据库服务器在计算plans...and时所做的工作量,最终会减少第一次执行存储过程的时间。called...You可以发出命令,强制存储过程每次重新编译,以测试是否减少了初始调用时间……我们曾经遇到过这样的情况:存储过程的复杂性使得数据库服务器必须根据不同的参数不断地重新编译,这极大地减慢了数据库服务器的速度,将SP拆分或将大型select语句简化为多个update语句等都有相当大的帮助。
其他想法可能是断断续续地调用简单的getDate()或类似的方法,这样sql server就会唤醒(希望这是有意义的)...much,就像在IIS的内存中保留asp.net应用程序一样。
发布于 2009-07-06 04:31:46
.NET连接池中打开的连接的默认值为零。
您可以将连接字符串中的此值调整为1或更多:
"data source=dbserver;...Asynchronous Processing=true;Min Pool Size=1"查看有关这些options in MSDN的更多信息。
发布于 2009-07-03 09:40:30
你可以通过不关闭它来保持它打开。:)但这是不可取的,因为连接池将为您处理连接管理。你启用它了吗?
https://stackoverflow.com/questions/1078602
复制相似问题