Distribution Writer 调用Statement Delivery 存储过程,将Publication的改变同步到Subscriber中。查看Publication Properties->Ariticle Properties->Statement Delivery 属性,Distribution Writer调用Insert,Update 或 Delete 存储过程,实现数据的同步。

Distribution Writer不是每一个Command单独提交,而是根据CommitBatchSize 和CommitBatchThreshold来批量提交Commands,这样可以提高性能。

-CommitBatchSize commit_batch_size Is the number of transactions to be issued to the Subscriber before a COMMIT statement is issued. The default is 100.

-CommitBatchThreshold  commit_batch_threshold Is the number of replication commands to be issued to the Subscriber before a COMMIT statement is issued. The default is 1000.

一般情况下,Distribution Writer的写入速度十分快,很少出现 Latency Problem。如果出现PageIOLatch_EX 或  PageIOLatch_SH 等待,请参考《Latch2:Latch和性能》:

PAGEIOLATCH_SH 发生在用户访问一个数据页,同时SQL Server正在将数据页从磁盘写入内存,经常发生PAGEIOLATCH_SH等待,说明内存不够大,导致SQL Server需要做很多页面读取的操作,磁盘IO是内存压力的副作用。

PAGEIOLATCH_EX:发生在从Disk page读取到内存buffer中,经常发生PAGEIOLATCH_EX等待,说明Disk读取速度慢,这和内存没直接关系。

Appendix:

引用《Transactional Replication Conversations》:

Distribution Writer thread writing queue commands to the Subscriber via parameterized stored procedures prefixed with sp_MSupd…, sp_MSins…, sp_MSdel… to apply individual row changes to each article at the subscriber.

The Writer-Thread calls Replication created stored procedures to apply changes to the subscriber.  These sp’s rely on a user table’s unique index (usually primary key) to locate records to be updated or deleted.  Latency in the Writer thread is usually see in long-running execution time for these stored procedures.

Possible Cause: Not Replicating SQL statements as “Parameters”

Obtain the create publication script and check ALL articles to see if the SQL statements are being sent as batch of ‘parameters’ statements.  The status = 8 indicates ‘parameters’ batching is not enabled.

查看Article的Status,推荐将Status设置为25。

select artid,
    name,
    objid,
    pubid,
    status
from dbo.sysarticles

Satus:The bitmask of the article options and status, which can be the bitwise logical OR result of one or more of these values:

1 = Article is active.

8 = Include the column name in INSERT statements.

16 = Use parameterized statements.

24 = Both include the column name in INSERT statements and use parameterized statements.

64 = Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.

For example, an active article using parameterized statements would have a value of 17 in this column. A value of 0 means that the article is inactive and no additional properties are defined.

Article status can be updated on-demand using the following Replication stored procedure.  This should be executed on all articles.

USE [Publisher_database]
GO

exec [sys].[sp_changearticle]
    @publication    sysname = NULL,
    @article        sysname = NULL,
    ) = NULL,
    ) = NULL

参考doc:

Transactional Replication Conversations

事务复制会话 (五)

事务复制会话 (四)

sysarticles (Transact-SQL)

Distribution2:Distribution Writer的更多相关文章

  1. Distribution1:Distribution Reader

    在transactional replication中,在publication中执行了一个更新,例如:update table set col=? Where ?,如果table中含有大量的数据行, ...

  2. Replication:Distribution Reader

    在transactional replication中,在publication中执行了一个更新,例如:update table set col=? Where ?,如果table中含有大量的数据行, ...

  3. 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D:Distribution in Metagonia(构造)

    http://codeforces.com/gym/100801/attachments 题意:给出一个数n(1 <= n <= 1e18),将 n 拆成 m 个整数,其中 m 必须是 2 ...

  4. Replication:distribution 中一直在运行 waitfor delay @strdelaytime 语句

    Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...

  5. IPC 经典问题:Reader & Writer Problem

    完整代码实现: #include <stdio.h> #include <unistd.h> #include <time.h> #include <stdl ...

  6. Gym - 100801D:Distribution in Metagonia (数学)

    题意:给定一个N,让你把它拆成若干个只含素因子2和3的数之和,且两两之间没有倍数关系,比如10=4+6. 思路:即是2因子的幂递增,3因子的幂递减:或者反之. 对于当前N,我们拆分出的数为num=2^ ...

  7. Scalaz(13)- Monad:Writer - some kind of logger

    通过前面的几篇讨论我们了解到F[T]就是FP中运算的表达形式(representation of computation).在这里F[]不仅仅是一种高阶类型,它还代表了一种运算协议(computati ...

  8. 杂项-桌面应用程序:Windows Live Writer(WLW)

    ylbtech-杂项-桌面应用程序:Windows Live Writer(WLW) Windowslive Writer 即(WLW) 是一个免费的桌面应用程序,您可以使用它轻松发布丰富的内容到您的 ...

  9. DevExpress应用案例--语音识别器Dual Writer

    Dual Writer是 一个以语音识别为特色的文档处理器,无需安装其他软件,只需要插入你的麦克风就可以开始录入口述文字.它不仅支持MS Word的DOCX格式,还支持 RTF.ODT.TXT等常见文 ...

随机推荐

  1. Xcode playground markdown常用语法

    //: **Bold** *Italic* /*: # h1 ## h2 ### h3 #### h4 h5 h6 same as h3 --- --- --- * blank seperate li ...

  2. ACM : POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  3. js学习笔记之标准库

    在全局函数中,this等于window  在函数被作为某个对象的方法调用时,this等于那个对象. 数组的函数: 检测:Array.isArray() 转换:toString(),toLocalStr ...

  4. Android自定义折线图

    老师布置了个作业:http://www.cnblogs.com/qingxu/p/5316897.html 作业中提到的 “玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动.” ...

  5. Meta标签介绍

    Meta标签写法与作用  meta标签是在HTML网页源代码中一个重要的html标签.meta位于head区的辅助性标签,提供用户不可用的信息.   META标签用来描述一个HTML网页文档的属性,例 ...

  6. 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)

    V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...

  7. 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...

    在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...

  8. angularJS 杂

    慎用ng-repeat 中的 $index http://web.jobbole.com/82470/ 服务provider,公共代码的抽象 (语法糖)分为: constant常量:constant初 ...

  9. 前端工具之-- Sublime

    开始学习前端知识,做一些笔记来记录下- 之前学习都是使用的dw 现在前端开发工具既轻便功能也够强大. 下面记录下常用的前端工具: Sublime3:需要安装第三方包,一般 Atom:继承度非常好 VS ...

  10. BOM DOM Event事件笔记....

    js//获取文件标题 document.body //body document.title //网页标题 document.doctype//文档对象 document.url//路径 //服务器相 ...