Suleyman Essa Asked: 2025-02-21 19:09:08 +0800 CST2025-02-21 19:09:08 +0800 CST 2025-02-21 19:09:08 +0800 CST 有没有直接的方法可以知道旋转木马扫描是否发生? 772 文档中 说我们可以共享索引扫描(高级扫描)。现在他们在这里 使用等待统计数据和统计信息,但我没有找到可以直接识别它的扩展事件会话。 问题是 - 我如何知道已使用高级扫描?我知道有 ordered false 属性,但这只是说它没有使用索引键中的顺序? sql-server 1 个回答 Voted Best Answer Paul White 2025-02-22T15:02:29+08:002025-02-22T15:02:29+08:00 这取决于你所说的“直接方式”是什么意思。例如,没有扩展事件或跟踪标志*。 可以附加一个调试器,看看旋转木马(MGR) 代码是否被激活,这可以说是直接的,但并不总是方便。我通常Get/SetMerryGoRoundPosition使用sqlmin!BaseSharedHoBt。 还有一些间接方法,例如检查返回记录的物理定位器并进行比较。 企业版高级扫描功能(市场名称,内部名称为 MGR)仅针对某些类型的分配有序扫描启用,这些扫描与缓冲池相比足够大。细节很复杂,没有明确的模式,也没有记录。顺便说一下,您的第二个链接使用的是堆/表扫描,而不是索引扫描。 据我所知,MGR 的文档很少,因此它可用于行业标准基准测试。换句话说,它是一个特殊的基准测试。 值得一提的是,从技术上讲,使用 MGR 不需要同时进行扫描。行集的 MGR 扫描的当前位置每秒更新一次。同一行集的合格扫描如果在另一个合格扫描完成后不到一秒内开始,则将使用 MGR。 * 未记录的跟踪标志 6974 禁用 MGR
这取决于你所说的“直接方式”是什么意思。例如,没有扩展事件或跟踪标志*。
可以附加一个调试器,看看旋转木马(MGR) 代码是否被激活,这可以说是直接的,但并不总是方便。我通常
Get/SetMerryGoRoundPosition
使用sqlmin!BaseSharedHoBt
。还有一些间接方法,例如检查返回记录的物理定位器并进行比较。
企业版高级扫描功能(市场名称,内部名称为 MGR)仅针对某些类型的分配有序扫描启用,这些扫描与缓冲池相比足够大。细节很复杂,没有明确的模式,也没有记录。顺便说一下,您的第二个链接使用的是堆/表扫描,而不是索引扫描。
据我所知,MGR 的文档很少,因此它可用于行业标准基准测试。换句话说,它是一个特殊的基准测试。
值得一提的是,从技术上讲,使用 MGR 不需要同时进行扫描。行集的 MGR 扫描的当前位置每秒更新一次。同一行集的合格扫描如果在另一个合格扫描完成后不到一秒内开始,则将使用 MGR。
* 未记录的跟踪标志 6974 禁用 MGR