【发布时间】:2018-01-16 20:22:40
【问题描述】:
我的数据库启用了 CDC,并且更改捕获工作正常,直到两周前 CT 表仅在 3 到 4 小时内更新一次。
版本:SQL Server 11.0.5613
我尝试过的事情: 1.停止并重新启动捕获作业 2. 重新启动 SQL Server 进程。 3. 尝试捕获延迟(发现更新在CT表中仅4小时批量填充一次) 4. 尝试将@maxtrans 增加到 1000,但这确实使系统赶上了。它仍然在 4 小时内运行一次。
我根据以下输出做了一些研究:
exec sys.sp_cdc_help_jobs
这里的 maxtrans 是指每个扫描周期正在处理的事务数。 (从 500 增加到 1000)。它与正在处理的 log_records 的数量不同。如果您查看 tran_count 列,它是“sys.dm_cdc_log_scan_sessions”表中正在处理的事务数,您会看到它始终低于 500。(session_id = 0 显示 1052,因为它是一个特殊条目,表示所有自 1 月 7 日服务器重新启动以来处理的事务。) 所以我不确定问题是否出在 maxtrans 上。
SELECT latency, empty_scan_count, * FROM sys.dm_cdc_log_scan_sessions order by end_time desc
从这个分析看来,这项工作在 4 小时内什么都不做,或者在四个小时内什么都不做(这似乎不太可能)。然后处理直到那个时间的所有更新,然后停止 4 小时。 唯一与此一致的是事务日志备份作业的频率,该作业在上午 12:00 到晚上 11:59 之间每 4 小时运行一次。我不确定它们是否以某种方式相关。我试图改变工作的频率并查看影响。它没有任何影响。
任何指针都会有很大帮助。
【问题讨论】:
-
无论是否相关,每 4 小时运行一次日志备份似乎不够频繁。您是否尝试更频繁地运行它们以查看对您的 CDC 性能有什么(如果有)影响?
-
我尝试每小时运行一次日志,它对日志扫描会话的时间签名没有影响。 -- 它只是有相同的 4 小时模式。
标签: sql-server sql-server-2008 change-data-capture