zoukankan      html  css  js  c++  java
  • tracer token 追踪标记

    tracer token是SQL SERVER 2005引入的一个追踪机制, 应用在replication的场景中.用于查看replication的延迟情况. tracer token的原理如下:

    1. 在publication database的日志里生成一条记录,该记录被标记成需要被复制.
    2. LogReader agent读取这条记录,插入到distribution database
    3. Distribution agent将distribution database该条记录插入到订阅服务器.

    SQLSERVER会去追踪整个过程,统计三个时间段所花费的时间,这样就可以推断出哪个步骤出现了问题:到底是发布到分发慢,还是分发到订阅慢.进而有针对性的进行排查

    tracer token可以再Replication Monitor里生成,也可以通过T-SQL语句来实现.

    打开replication Monitor,选择要查看的发布.

    image

    从上图可以看出”从发布到分发”和”从分发到订阅”都存在延迟. 其中”从分发到订阅”的时间更长.

    使用T-SQL

    1 插入一个token

    在发布服务器的发布库执行:

    DECLARE @tokenID AS int;
    exec sp_posttracertoken 'publicationTest',@tracer_token_id = @tokenID OUTPUT
    select @tokenID as tokenID

    image

    其中publicationTest为发布的名称,执行时替换成实际的发布名称即可(可以通过sp_helppublication查到)

    2 观察

    这个token会被logreader agent传递到distribution database,最终被distribution agent传递到订阅.

    这些信息被记录在distribution database

    在distribution database内执行如下语句

    select * from MStracer_tokens where tracer_id=-2147483642 -----trace_id为上一步的tokenID
    select * from MStracer_history where parent_tracer_id=-2147483642

    image

    可以看到,我们在2011-06-01 13:47:13.500这个时间点插入了token,但目前还没有传递到分发,所以distributor_commit为null

    过一段时间后再次执行

    image

    从截图里看以看到,distributor_commit为2011-06-01 13:52:03.120,距离插入token的2011-06-01 13:47:13.500已经过去了5分钟. subscriber_commit代表传递到订阅的时间:2011-06-01 13:52:07.630, 从分发到订阅大约是4秒.所以从这个可以看出replication的主要瓶颈出在从发布到分发这一步.

    也可以在发布库执行

    exec sys.sp_helptracertokens publicationTest
    EXEC sys.sp_helptracertokenhistory  publicationTest, -2147483642
  • 相关阅读:
    sqlzoo练习系列(一)——SELECT 基础
    域名重定向
    自动识别PC端、移动端,并跳转
    Laravel传递多个参数到页面
    Laravel提示The GET method is not supported for this route. Supported methods: POST.错误的解决办法
    Laravel8和之前Laravel版本的区别
    Laravel使用Ajax提交表单报419 unknown status错误的解决方法
    PHP 函数调用之引用地址
    软件开发流程以及开发原则
    php 函数基础
  • 原文地址:https://www.cnblogs.com/stswordman/p/2065979.html
Copyright © 2011-2022 走看看