-1

我正在运行带有异步复制的 SQL Server 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;

这给了我这样的回应:

  • session_id = 69
  • 文本 = 开始翻译
  • 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
  • 写入 = 5166597
  • 逻辑读取 = 112256365

现在,在互联网上,我发现当你看到Replication Distribution Agent一切都很好时,那个代理应该会去,应该没有问题。但为什么:

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

1 回答 1

1

这是完全正常的。

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

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

于 2020-10-03T02:46:42.727 回答