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;
这给了我这个回复:
- session_id = 69
- text = 开始翻译
- 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
- logical_reads = 112256365
现在在网上我发现当你看到Replication Distribution Agent
一切正常时,那个代理应该就可以了,应该没有问题。但为什么:
- 文字说的是
begin tran
,仅此而已?
- IDERA SQL 检查是否将其标记为
connection idling transaction
?
- 状态是
sleeping
?
- 我担心
CPU time, reads and writes
基本上是在告诉我这个过程正在无休止地烧毁驱动器 I/O,对吗?
这是完全正常的。
复制分发代理有效地运行持续扫描源上的事务,以便能够将它们发送到副本。因为需要捕获这些并转发它们,所以它必须不断运行。
它不会炸毁您的驱动器 - 除非您的事务处理率如此之高以至于实际上正在炸毁您的驱动器。它以增量方式显示高读取 - 这是累积值而不是当前的快照。这表明它在 20 天内读取了相当于 141GB 的数据——使用量不是特别大。
我是 运行 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;
这给了我这个回复:
- session_id = 69
- text = 开始翻译
- 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
- logical_reads = 112256365
现在在网上我发现当你看到Replication Distribution Agent
一切正常时,那个代理应该就可以了,应该没有问题。但为什么:
- 文字说的是
begin tran
,仅此而已? - IDERA SQL 检查是否将其标记为
connection idling transaction
? - 状态是
sleeping
? - 我担心
CPU time, reads and writes
基本上是在告诉我这个过程正在无休止地烧毁驱动器 I/O,对吗?
这是完全正常的。
复制分发代理有效地运行持续扫描源上的事务,以便能够将它们发送到副本。因为需要捕获这些并转发它们,所以它必须不断运行。
它不会炸毁您的驱动器 - 除非您的事务处理率如此之高以至于实际上正在炸毁您的驱动器。它以增量方式显示高读取 - 这是累积值而不是当前的快照。这表明它在 20 天内读取了相当于 141GB 的数据——使用量不是特别大。