如何测量 SQL Server 上每秒的关键查找次数

Sal*_*r L 7 performance sql-server sql-server-2008-r2 perfmon performance-tuning

我正在努力减少在我们的 SQL Server 上进行关键查找的事务量。

首先,我想为该指标的正常或可容忍数字定义一个基线,并且由于我们在生产中不断发布版本,然后,我想基于它创建一个自动化,当它下降时通知我。

我遇到的问题实际上是在perfmon或 SQL DMV上找到正确的计数器来获取数据。

我查看了明显的对象SQL Server,访问方法对象,但找不到特定的对象。我还尝试了其他计数器或 SQL 视图,但找不到。

任何建议将不胜感激!

Pau*_*ite 7

我不知道一种完全准确和可靠的方法来跟踪这个。

至少获得一些可能有用的东西的一种方法是保留sys.dm_db_index_usage_stats 的快照,特别是user_lookupsindex_id 0(RID 查找)和 1(键查找)的列。可以出于多种原因重置此 DMV,包括数据库或实例重新启动。重建(但不重组)和索引还会清除 SQL Server 2012 及更高版本上的相关 DMV 条目,这会使事情变得更加困难。您需要定期捕获信息并使用启发式方法来决定 DMV 是否在两次捕获之间重置。

索引使用统计 DMV 也只返回包含查找的计划执行次数的计数。无论实际执行的查找次数如何,包含单个 Key Lookup 的计划都会将计数器加 1。即使根本不执行查找,它也会增加。

sys.dm_db_index_operational_stats中DMV记录实际执行单查找的数量,但并不区分之间单对指数直接寻找,并从密钥那些结果或RID查找,所以它不是你的目的。

单例搜索是访问方法对象报告的探测扫描的另一个名称。无法区分对唯一索引的“正常”单例搜索和查找导致的单例搜索。这意味着访问方法探测扫描计数器对您没有用处。无论如何,AM 计数器非常嘈杂,并且无法将计数器与特定索引相关联。