完成查询的状态

时间:2013-09-20 12:25:45

标签: sql sql-server-2008 monitoring

我想知道这是否可能,

如果查询花了这么多时间,我可以看到剩下或完成的查询百分比吗?  系统中的任何地方?

我知道这是一个愚蠢的问题,但有时会因为知道需要多长时间而等待查询完成而烦恼。

2 个答案:

答案 0 :(得分:2)

有些请求确实有完整的估算百分比,可以在sys.dm_exec_requests.percent_complete中查看:

  

以下命令完成的工作百分比:

     
      
  • ALTER INDEX REORGANIZE
  •   
  • ALTER DATABASE的AUTO_SHRINK选项
  •   
  • 备份数据库
  •   
  • DBCC CHECKDB
  •   
  • DBCC CHECKFILEGROUP
  •   
  • DBCC CHECKTABLE
  •   
  • DBCC INDEXDEFRAG
  •   
  • DBCC SHRINKDATABASE
  •   
  • DBCC SHRINKFILE
  •   
  • RECOVERY
  •   
  • RESTORE DATABASE,
  •   
  • ROLLBACK
  •   
  • TDE ENCRYPTION
  •   
     

不可为空。

但您可能对查询请求感兴趣(SELECT)。在这种情况下,如果他们花了那么多时间开始想知道他们在做什么,那就称你手头有性能问题。将其作为绩效调查。使用Waits and Queues等方法来识别瓶颈。解决已发现的瓶颈问题。

答案 1 :(得分:1)

没有直接的方法可以知道查询将花多长时间,因为数据库引擎不“知道”完成查询需要多长时间。根据查询的逻辑,引擎将扫描/搜索各种表和索引,并选择哪些行符合您的标准。

一旦引擎在查询中逻辑运行并选择了所有有效行,它就会“完成”。

这与文件副本有很大不同,例如文件系统知道它有X兆字节可读/写。

获取所需信息的最佳实用方法可能是记录类似(通过表,联接,过滤器)查询和过去的执行时间,并将其用作当前查询的估计值。