SQL:如何获取每个数据库或每小时或...的执行查询数?
Posted
技术标签:
【中文标题】SQL:如何获取每个数据库或每小时或...的执行查询数?【英文标题】:SQL: How can I get the number of executed queries per database or hour or ...? 【发布时间】:2012-04-08 04:24:47 【问题描述】:有没有什么方法可以查看每小时执行多少查询,或者每个数据库/小时,或者一天的平均查询数,或者......任何有趣的事情?
仅用于统计.. 我喜欢数字。 我不能只使用 Sql Server Profiler 开始跟踪,因为当查询过多时 UI 会崩溃。
SQL 是否会在某处跟踪一些基本的“已执行查询统计信息”,或者是否有任何工具可以用来获取这些信息?
(我使用的是 SQL Server 2008 R2)
【问题讨论】:
sqlserverperformance.idera.com/tsql-optimization/… 关于索引和列/表统计的好帖子,但没有说明执行查询的数量 【参考方案1】:我实际上只是在我的 Microsoft 认证中了解到这一点。
虽然我还不能直接回答你的问题,但我可以通过几件事向你发送正确的方向:
-
查看服务器 > 数据库 > 系统数据库 > MSDB > 视图 > 系统视图中的视图。 MSDN Systsem Views
查看服务器 > 数据库 > 系统数据库 > 主 > 视图 > 系统视图中的视图。
充分利用 SQL Server 可用的跟踪工具。
在视图中请注意,您实际上可能必须将几个视图连接在一起,或者获取基础表才能明确获得您所追求的内容。
【讨论】:
【参考方案2】:这应该可行:
select *
from sys.dm_os_performance_counters
where counter_name = 'Batch Requests/sec'
它实际上返回 total 批请求。你定期轮询这个数字,然后使用这个计算:
ReqsPerSec = (curr.Value - prev.Value) / (curr.time - prev.time)
【讨论】:
很好,我还不知道这个柜台。你知道这个计数器什么时候重置吗?计数器有一个值(大约 2.24 亿),但就像 10 天前一样。这是所有数据库的总和。我也可以“每个数据库”获取此信息吗? @RBarryYoung 您的网站显示“用户“rba0813312265276”登录失败。原因:该帐户已被禁用。禁用公共异常可能很好? @Erik Dekker:当 SQL Server 启动时计数器被重置。没有等效的每个数据库计数器 (AFAIK),但可能有一些产品/工具可以得到它(通过跟踪和扩展)。 @Kees C. Bakker:很遗憾,但我已经很久没有维护我的网站了。所以它真的对每个人都无效,包括我。对不起。 :(以上是关于SQL:如何获取每个数据库或每小时或...的执行查询数?的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase 到 BigQuery 的实时或每小时数据同步
如何制作一个循环或每 5 秒执行一次任务然后自行重置的东西?