首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server中查找复制延迟?

如何在SQL Server中查找复制延迟?
EN

Stack Overflow用户
提问于 2015-01-13 16:41:48
回答 1查看 1.1K关注 0票数 0

在MYSQL服务器中,通过查看“第二次落后于主服务器”的值,就可以知道从服务器落后于其主服务器的程度。那么,在MSSQL中有没有类似的东西,这样就可以知道主服务器是如何落后于从服务器的呢?

EN

回答 1

Stack Overflow用户

发布于 2015-01-13 23:37:52

在这个问题上有一些争议,但我喜欢使用定期发布的跟踪标记。也就是说,您在发布服务器上调用sp_posttracertoken过程,它将一直向订阅服务器发送一个令牌。您可以查看分发服务器数据库中所有令牌的历史记录。为了让数据更容易理解,我编写了以下视图:

代码语言:javascript
复制
create view [dbo].[tokens] as
select
    ps.name as [publisher],
    p.publisher_db,
    p.publication, 
    ss.name as [subscriber],
    da.subscriber_db,
    t.publisher_commit,
    t.distributor_commit,
    h.subscriber_commit,
    datediff(second, t.publisher_commit, t.distributor_commit) as [pub to dist (s)],
    datediff(second, t.distributor_commit ,h.subscriber_commit) as [dist to sub (s)],
    datediff(second, t.publisher_commit, h.subscriber_commit) as [total latency (s)]
from mstracer_tokens t
inner join MStracer_history h
    on t.tracer_id = h.parent_tracer_id
inner join mspublications p
    on p.publication_id = t.publication_id
inner join sys.servers ps
    on p.publisher_id = ps.server_id
inner join msdistribution_agents da
    on h.agent_id = da.id
inner join sys.servers ss
    on da.subscriber_id = ss.server_id

另一种方法是使用通常所说的金丝雀表。这个想法是,您有一个专门用于监视复制的表,该表通常只有一行带有datetime字段。在发布服务器上更新列,然后通过查看该列在订阅服务器上的值来监视该列在订阅服务器上的落后程度。

最后,您可以查看一些perfmon计数器。根据我的经验,它们不是很好;未完成命令的数量是一个准确的数字,但是将延迟作为持续时间的度量通常是非常不准确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27917933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档