顶部等待中的 XE_SERVICES_RWLOCK

Art*_*yan 0 sequence identity sql-server-2016 waits

上一个版本发布后,我们开始面临一些不寻常的等待。XE_SERVICES_RWLOCK等待开始出现在我们的顶级等待中。调查显示这种等待发生在插入我们的主 OLTP 表期间。我们在这部分中唯一改变的是我们通过插入序列来改变插入到标识列中。实际上我们还没有从列中删除身份选项。相反,我们只是在做

SET IDENTITY_INSERT ON

INSERT STATEMENT HERE

SET IDENTITY INSERT OFF
Run Code Online (Sandbox Code Playgroud)

我们没有删除身份属性的原因是它需要重建表,但我们的表很大,需要几个小时的停机时间。问题是什么是XE_SERVICES_RWLOCK 等待,它们是否会出现在大量语句的情况下SET IDENTITY_INSERT ON|OFF,或者根情况是否可以使用sequence而不是identity

我们sp_WhoIsActive每 30 秒运行一次并将结果保存到表中以便以后调查问题。您可以从所附表格中看到结果。

在此输入图像描述

我们使用的是 SQL Server 2016 SP2。

Eri*_*ing 5

等待

由于此等待包含XE在名称中,因此它可能与扩展事件相关联。它可能完全可以忽略不计,但从你在这里描述的内容很难看出。我怀疑这与您发布的代码更改有关。

我会检查一下是否有:

  • 正在运行的任何正在积极收集数据的扩展事件
  • 执行期间实际等待的任何查询

我已经确认您遇到的等待与 XE 缓冲数据输入和输出有关。如果您已禁用所有活动的 XE 会话,但仍然处于等待状态,则需要 Microsoft 提供支持案例。它们应该仅在活动时触发,并且它们绝对不应该像这样妨碍查询性能。