SQL 服务器 :: 复制分发代理永无止境

SQL Server :: Replication Distribution Agent never ending

我是 运行 SQL 服务器 2019 Always ON 可用性组,具有异步复制。

我使用了一个名为 IDERA SQL Check 的免费工具,我发现了 SPID 69 程序名称是 Replication Distribution Agent。它总是在那里,像一只无聊的猫一样盯着我。

这个 SPID 69 指向一个特定的数据库,它是 镜像 我用这个查询调查了它:

select 
s.session_id
,login_name
,login_time
,host_name
,program_name
,status
,cpu_time
,memory_usage
,total_scheduled_time
,total_elapsed_time
,last_request_start_time
,reads
,writes
,logical_reads
from sys.dm_exec_sessions s
inner join sys.dm_exec_connections c
on s.session_id = c.session_id
outer apply sys.dm_exec_sql_text(c.most_recent_sql_handle) st
where s.is_user_process = 1
and s.open_transaction_count > 0;

这给了我这个回复:

现在在网上我发现当你看到Replication Distribution Agent一切正常时,那个代理应该就可以了,应该没有问题。但为什么:

  1. 文字说的是 begin tran,仅此而已?
  2. IDERA SQL 检查是否将其标记为 connection idling transaction?
  3. 状态是sleeping?
  4. 我担心 CPU time, reads and writes 基本上是在告诉我这个过程正在无休止地烧毁驱动器 I/O,对吗?

这是完全正常的。

复制分发代理有效地运行持续扫描源上的事务,以便能够将它们发送到副本。因为需要捕获这些并转发它们,所以它必须不断运行。

它不会炸毁您的驱动器 - 除非您的事务处理率如此之高以至于实际上正在炸毁您的驱动器。它以增量方式显示高读取 - 这是累积值而不是当前的快照。这表明它在 20 天内读取了相当于 141GB 的数据——使用量不是特别大。