我有一个占用过多服务器资源的存储过程。我想将此查询限制为仅使用不超过10%的reosurces。我听说过Resource governor,但它仅适用于企业版和开发版。我有一个标准版。 除了购买更好的sql server版本之外,还有其他替代方案吗?
答案 0 :(得分:3)
定义'资源'。 IO?中央处理器?记忆?网络?争?日志大小? tempdb的?你无法回答'全部'。您需要通过该过程指定现在正在消耗的资源。
你的问题过于笼统,无法回答。没有通用机制来限制查询或过程的“资源”,即使资源调控器仅限制某些资源。您描述了您的问题,因为是长时间的高容量数据操作,例如整个数据库中的数万次插入更新,这将指示批处理处理。如果该过程确实完成了您所描述的内容,则限制其执行可能不是您想要的,因为您希望减少事务的持续时间(批次)不会增加它。
首先:您是否使用像Waits and Queues这样的方法将程序分析为程序资源消耗作为性能问题?只有在您完成此过程并且过程以最佳方式运行(意味着它消耗所需的最少资源来执行它的工作)之后,您可以考虑限制该过程(并且很可能在那时需要< / em>节流已经神奇地消失了。)
答案 1 :(得分:1)
您可以使用MAXDOP
查询提示来限制给定查询可以使用的CPU数量。除了你提到的高端铃声和口哨之外,我认为没有任何东西可以让你对内存分配或磁盘使用设置单进程级限制。