我想知道这是否可能,
如果查询花了这么多时间,我可以看到剩下或完成的查询百分比吗? 系统中的任何地方?
我知道这是一个愚蠢的问题,但有时会因为知道需要多长时间而等待查询完成而烦恼。
答案 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兆字节可读/写。
获取所需信息的最佳实用方法可能是记录类似(通过表,联接,过滤器)查询和过去的执行时间,并将其用作当前查询的估计值。