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 秒执行一次任务然后自行重置的东西?

如何在每个特定时间刷新图像? JavaScript [重复]

Sql 获取每个用户每天的小时数

如何加快包含 sql 查询的代码?