SQL Server ::复制分发代理永无止境

问题描述

我正在运行带有异步复制的SQL Server 2019 Always ON可用性组。

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

enter image description here

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;

谁给了我这个回复:

  • session_id = 69
  • text = begin tran
  • login_time = 2020-09-08 18:40:57.153
  • program_name =复制分发代理
  • 状态=睡觉
  • cpu_time = 1362772
  • memory_usage = 4
  • total_scheduled_time = 1689634
  • total_elapsed_time = 22354857
  • last_request_start_time = 2020-09-28 16:28:39.433
  • 读取= 18607577
  • writes = 5166597
  • logical_reads = 112256365

现在,在互联网上,我发现当您看到Replication Distribution Agent一切都很好时,该代理应该就可以了,应该没有问题。但是为什么:

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

解决方法

这完全正常。

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

这不是在炸硬盘-除非您的事务处理速度如此之高以至于实际上是在炸硬盘。它以递增的方式显示高读数-这是累积值,而不是电流的快照。这表明它在20天内已读取了141GB的数据-使用量不是特别大。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...