sql-server - 使用查询或存储过程延迟 SQL Server 2000 查询直到处理器利用率低于 50%?

标签 sql-server sql-server-2005 t-sql sql-server-2008 sql-server-2000

我有几个非常昂贵的查询,它们似乎占用了资源,这似乎使系统不堪重负。

是否有一个延迟函数可以调用来等待 SQL Server 2000 - 2008 中的处理器资源恢复正常?

我的最终目标是返回并使用存储过程来提高这些效率,但与此同时,我需要让这些尽快工作,因为我正在重写遗留代码。

最佳答案

你可以尝试这样的事情:

DECLARE @Busy int
       ,@Ticks int
SELECT @Busy=@@CPU_BUSY
      ,@Ticks=7777  --<you have to determine this value based on your machine
WAITFOR DELAY '00:00:10' --10 seconds

WHILE @@CPU_BUSY-@Ticks>@BUSY
BEGIN
    --too busy, wait longer
    @BUSY=@@CPU_BUSY
    WAITFOR DELAY '00:00:10' --10 seconds
END

EXEC YourProcedureHere

要确定@Ticks值,只需编写一个循环,每10秒打印出@@CPU_BUSY值之间的差异。当系统处于低负载时,使用该值作为@Ticks。

关于sql-server - 使用查询或存储过程延迟 SQL Server 2000 查询直到处理器利用率低于 50%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948036/

相关文章:

sql - 以编程方式锁定 SQL 登录

sql - 使用锁和有序输出更新数据库队列

sql-server - 尽管被多次调用,但在 SQL Server 中执行一次查询

sql - 按创建日期列出的所有存储过程?

sql-server - 如何在SQL Server中提取特定字符串?

sql-server - 如何使用XQuery模拟STRING_AGG()(分组字符串连接)?

sql - 如何确定数据集中的开始和结束事件?

java - hibernate SQL Server 连接

sql-server-2005 - 为什么 varchar 的最大长度小于 8,000 字节?

sql - SUBSTRING 空值替代方案