问题描述
我正在运行带有异步复制的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
- 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
一切都很好时,该代理应该就可以了,应该没有问题。但是为什么:
- 文字说
begin tran
,仅此而已? - IDERA SQL Check是否将其标记为
connection idling transaction
? - 状态为
sleeping
? - 我担心
CPU time,reads and writes
基本上是在告诉我,此过程正在使驱动器永无休止地结束I / O,对吗?
解决方法
这完全正常。
复制分发代理有效地连续运行以扫描源上的事务,以便能够将它们发送到副本。因为它需要捕获并转发它们,所以它必须连续运行。
这不是在炸硬盘-除非您的事务处理速度如此之高以至于实际上是在炸硬盘。它以递增的方式显示高读数-这是累积值,而不是电流的快照。这表明它在20天内已读取了141GB的数据-使用量不是特别大。