位置: 编程技术 - 正文
推荐整理分享SqlServer 复制中将大事务分成小事务分发的方法(sql server复制表数据),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:sql中复制表中内容,sql server 复制,sql server复制数据库的方法,sqlserver复制表语句,sqlserver中复制表,sql server 复制,sql server 复制,sqlserver复制表语句,内容如对您有帮助,希望把文章链接给更多的朋友!
在sql server 复制中,当在发布数据库执行1个大事务时,如一次性操作 十万或百万以上的数据。当操作数据在发布数据库执行完成后 ,日志读取器代理将扫描事务日志,一次性传递到分发数据库中。若上个事务未传递完成,连续执行多个事务,日志读取器代理将扫描日志中多个事务同时传递到分发数据库中,默认最大扫描个事务。如果执行多次上百万或千万的数据将堵塞很久。
日志读取器代理可配置将大事务划分为多个小事务进行传递到分发数据库中,分发队列则按照小事务分发到订阅数据库中,这样数据就很快同步!
在没改代理参数之前,本人执行1次插入万的数据到发布表中。插入完成后,监控发布到分发的记录如下:
可以看到,这1个事务的命令都得一次传递完才能分发,而分发又消耗时间,这里等待太久影响事务的实时性。如果还有其他事务,默认(参考参数:-ReadBatchSize),也将一起传递,耗时较长。
现在更改参数,扫描到 左右的命令就即时分发,需要设置如下参数:-MaxCmdsInTran number_of_commands
注:该参数只能添加到日志读取器代理中,在代理配置文件没有此参数的设置。
添加后重启 日志读取器代理。
再次插入 万的数据!~到监视器查看
可以看到,命令达到 左右就进行分发了,此时查看订阅数据库,数据也同步过来了,这样就省去了较多扫描命令的时间。更详细查看每个事务的命令数,如下:
这个参数虽好,但是也可能引起数据的一致性。
如:
在发布更新了一批数据,但是订阅查询时却有不同。
分发事务遇到冲突或者死锁,也导致这部分的数据不一致。
参考:复制日志读取器代理
如何快速删掉SQL Server登录时登录名下拉列表框中的选项 问题:我以前创建了一个登录名如kpi,之后在安全性-登录名里删掉了,但是每次登录时,登录名的下拉框中总是能显示登录名kpi,怎么把它删掉呢?解
浅述SQL Server的语句类别 数据库范式 系统数据库组成 前言终于等到这一天,我要开始重新系统学习数据库了,关于数据库这块,不出意外的话,每天会定时更新一篇且内容不会包含太多,简短的内容,深
详解SQL Server数据库架构和对象、定义数据完整性 前言本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解。数据库架构
标签: sql server复制表数据
本文链接地址:https://www.jiuchutong.com/biancheng/318991.html 转载请保留说明!友情链接: 武汉网站建设