如何估算SQL query完成百分比

SQL Server中没有内置或现成的方法去估算query完成的百分比或估算运行时间/剩下的运行时间。这篇文章仅对有兴趣研究的同学提供一些参考。


1, 首先我们可以先看看两篇关于如何估算query完成百分比的论文:

http://research.microsoft.com/pubs/76556/progress.pdf

http://pages.cs.wisc.edu/~naughton/includes/papers/increasingaccuracy.pdf


2,另外值得注意的是sys.dm_exec_requests中有percent_complete,但是大部分session该值都为零。因为这个字段只对特殊的command有效。

Percentage of work completed for the following commands:

  • ALTER INDEX REORGANIZE

  • AUTO_SHRINK option with ALTER DATABASE

  • BACKUP DATABASE

  • DBCC CHECKDB

  • DBCC CHECKFILEGROUP

  • DBCC CHECKTABLE

  • DBCC INDEXDEFRAG

  • DBCC SHRINKDATABASE

  • DBCC SHRINKFILE

  • RECOVERY

  • RESTORE DATABASE,

  • ROLLBACK

  • TDE ENCRYPTION

3,还有一个思路是借助SQL Server Operating System Related Dynamic Management Views (Transact-SQL)

http://msdn.microsoft.com/en-us/library/ms176083.aspx

例如sys.dm_os_tasks可以查询一个session的“Total byte count of I/Os that are performed by this task.” 我们是否可以结合query的执行计划中预估的磁盘IO来估算query的完成情况?有待研究。


你可能感兴趣的:(如何估算SQL query完成百分比)