我想知道这是否可能,
如果查询花费了这么多时间,我可以看到查询剩余或完成的百分比吗?系统中的任何位置?
我知道这是一个愚蠢的问题,但有时会因为等待查询完成而感到恼火,但不知道还需要多长时间。
我想知道这是否可能,
如果查询花费了这么多时间,我可以看到查询剩余或完成的百分比吗?系统中的任何位置?
我知道这是一个愚蠢的问题,但有时会因为等待查询完成而感到恼火,但不知道还需要多长时间。
有些请求确实有一个完成百分比估计,可以在以下位置查看sys.dm_exec_requests.percent_complete
:
以下命令完成的工作百分比:
- 改变索引重组
- 带有 ALTER DATABASE 的 AUTO_SHRINK 选项
- 备份数据库
- DBCC CHECKDB
- DBCC 检查文件组
- DBCC 检查表
- DBCC 索引碎片整理
- DBCC 收缩数据库
- DBCC 收缩文件
- 恢复
- 恢复数据库,
- 回滚
- TDE 加密
不可为空。
但您可能对查询请求 ( SELECT
) 感兴趣。在这种情况下,如果他们花了这么多时间开始想知道他们到底在做什么,这被称为你手头有性能问题。将其视为性能调查。使用等待和队列等方法来识别瓶颈。解决发现的瓶颈。
没有直接的方法可以知道查询需要多长时间,因为数据库引擎不“知道”完成查询需要多少总时间。根据查询的逻辑,引擎将扫描/查找各种表和索引,并选择哪些行满足您的条件。
一旦引擎通过您的查询逻辑地工作并选择了所有有效行,它就“完成”了。
这与文件副本有很大不同,例如文件系统知道它有 X 兆字节要读/写。
获取您正在寻找的信息的最佳实用方法可能是记录类似(通过表、连接、过滤器)查询和过去的执行时间,并将其用作当前查询的估计值。