如果我想知道现在发生了什么,那么我会使用 Adam Machanic 的sp_whoisactive
。如果我想了解我的服务器最近发生了什么,那么我将使用查询存储。
扩展事件旨在取代 Profiler,但我认为查询存储的组合sp_whoisactive
已经在 2016 或更高版本的任何 SQL Server 上做到了这一点。考虑到这一点,我什么时候会使用扩展事件?
为了获得灵感,我检查了dbatools 附带的扩展事件。我没有留下深刻的印象。它们似乎只对长期监控查询存储不存储的内容有用。例如:某些登录正在执行的操作、锁定、极其特定的 IO 类型、存储过程参数的使用以及已弃用的功能的使用。这些都很好,但坦率地说,我无法想象自己必须在服务器上进行如此外科手术式的调整。有没有我遗漏的常见用法?
不同的工具适合不同的工作。
我经常使用 XE 的目的
还有很多。这是我最喜欢的工具之一,也是我博客上的顶级标签 - https://straightforwardsql.com/tags/extended-events/
虽然这是考虑因素的一部分,但我们还创建了扩展事件,以便以更实时、侵入性更小的方式对 SQL Server 进行故障排除,并引入后端审计框架。
sp_whoisactive 或查询存储如何帮助您调查启动时间较长的数据库?它将如何帮助您提供来自不同查询优化或执行组件的反馈?这两项中哪一项有助于识别将数据库备份到云存储时可能出现的问题?AG同步的瓶颈在哪里?
上面提到的都是常见的物品。它还有助于理解SQL Server 的工作原理,并有助于深入了解其内部结构。
虽然您现在不认为自己会做这些事情,但您确定将来不会吗?
我已经成功地使用扩展事件来解决大量问题,很多时候它需要与其他数据结合起来才能了解整个情况并了解实际发生的情况。