测试数据表量1500w+,使用初始化默认的快照代理参数,复制的三个过程包括快照初始化,订阅初始化和数据修改复制,主要对快照代理、分发代理、日志读取代理分别作了参数优化,并给出优化前后的对照实验测试。

1.初始化快照
  • 在复制监视器中找到快照代理位置,右键,选择代理配置文件:
 
  • 查看默认配置:
 
  • 初始化快照时间:
 

2.优化参数测试

  • 新建一个快照代理配置文件,命名为“快照代理优化参数 ”
  • 查找这个代理配置文件的profile_id
use msdb
SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =1
或者
EXEC sp_help_agent_profile @agent_type= 1

这里的agent_type注解如下

代理的类型:
1 = 快照代理
2 = 日志读取器代理
3 = 分发代理
4 = 合并代理
9 = 队列读取器代理 
  • 修改配置文件,这里新增了MaxBcpThreads,MaxNetworkOptimization参数,修改了BcpBatchSize,HistoryVerboseLevel参数,对于性能提高最大的参数就是MaxBcpThreads,其他参数调整对性能调高不大,但MaxNetworkOptimization参数一定要调整到1,可以减少传输到订阅服务器上不必要的操作。
USE msdb
EXEC sp_add_agent_parameter @profile_id = 17,
@parameter_name = 'MaxBcpThreads', @parameter_value = 4 EXEC sp_add_agent_parameter @profile_id = 17,
@parameter_name = 'MaxNetworkOptimization', @parameter_value = 1 EXEC sp_change_agent_parameter @profile_id = 17,
@parameter_name = 'BcpBatchSize', @parameter_value = 200000 EXEC sp_change_agent_parameter @profile_id = 17,
@parameter_name = 'HistoryVerboseLevel', @parameter_value = 1
  • 调整后的参数:
 
  • 优化后测试结果,时间大大减少。但是如果在有业务负载同时生成快照,那么资源消耗很大,建议合理调整参数,不要设置太大并发,用默认配置已经有很高的I/O了。
 

SQL Server提高事务复制效率优化(二)快照初始化优化的更多相关文章

  1. SQL Server提高事务复制效率优化(一)总体概述

      随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的 ...

  2. SQL Server提高事务复制效率优化(四)修改数据同步过程优化

    1.原理       我说的数据修改同步过程指的是在快照生成完毕,分发代理将快照应用于订阅服务器完成订阅服务器初始化后,发布服务器后续的更改同步到订阅服务器过程,这也就是我们常常关注的延迟.此过程主要 ...

  3. SQL Server提高事务复制效率优化(三)订阅初始化优化

    初始化订阅主要是由分发代理分发和应用快照代理之前生成的快照,所以优化的主体是分发代理. 1.初始化订阅 首先在本地创建一个订阅,发布服务器.分发服务器和订阅服务器都在同一台服务器上,仅为了测试生产环境 ...

  4. SQL Server 2000事务复制问题

    2000现在用的估计不多了,把之前收集的一些复制问题整理发布出来.可能都是些很白很二的问题,但人总是由最初的无知不断成长●-● SQL Server 2000事务复制问题服务器A(发布) 服务器B(分 ...

  5. SQL Server提高并发查询效率

    同事写了个程序用创建多个线程使用ado同时对同个数据库进行相同的查询,涉及2张数据表的联查.当线程数非常多的情况下,读取数据的效率就会变得很慢,例如50个线程同时查询大概3000条数据,查询完成后通过 ...

  6. (转)SQL Server 的事务和锁(二)-Range S-S锁

    在这篇随笔中,我们的主要关注点在 Key-Range Lock.Key-Range Lock有 S-S.S-U.I-N.X-X几种情况.我们一个一个来说,力求明白.遗憾的是,这里可能会比较冗长,那么死 ...

  7. SQL Server 的事务和锁(二)-Range S-S锁

    在这篇随笔中,我们的主要关注点在 Key-Range Lock.Key-Range Lock有 S-S.S-U.I-N.X-X几种情况.我们一个一个来说,力求明白.遗憾的是,这里可能会比较冗长,那么死 ...

  8. Sql Server 2012 事务复制遇到的问题及解决方式

    1.订阅服务器提示:作业失败.无法确定所有者 WIN-01Q6JB46CHV\Administrator(拥有作业XXX)是否有服务器访问权限(原因:无法获取有关 Windows NT 组/用户'WI ...

  9. SQL Server 2005同步复制

    原文:SQL Server 2005同步复制 以下实现复制步骤(以快照复制为例) 运行平台SQL SERVER 2005 一.准备工作: 1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密 ...

随机推荐

  1. J2EE学习(2)--何謂容器【良葛格学习笔记搬】

    何謂容器 對於Java程式而言,JVM(Java Virtual Machine)是其作業系統,.java編譯為.class檔案,.class對於JVM而言,就是其可執行檔,你的Java程式基本上只認 ...

  2. TensorFlow官方文档中文版

    github地址: https://github.com/jikexueyuanwiki/tensorflow-zh

  3. KnockoutJS中父元素有click绑定引起checked绑定时失效

    KnockoutJS中的checked绑定如果父元素有click绑定,会出现状态点击没反应,实际KO的值已经变化的情况. 这种情况下应该在checked绑定的元素上除了阻止事件冒泡,另外还需要额外加上 ...

  4. C#使用StackTrace获取方法被谁调用

    在方法中扔进这段 System.Diagnostics.Debug.WriteLine()); System.Diagnostics.StackTrace st = new System.Diagno ...

  5. winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

    winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...

  6. Oracle 11g服务器安装详细步骤

    原出处:http://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 方法/步骤   1 大家可以根据自己的操作系统是多少位(32位或6 ...

  7. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  8. 源码阅读笔记 - 2 std::vector (1)

    vector的源码真是太长了,今天用了一个下午和一个晚上看和注释了前面的一千行左右 p.s.博客园的代码高亮真是太垃圾, 如果想要阅读带注释的源码,推荐粘贴到VS2015里,然后按ctrl+z取消自动 ...

  9. JS获取地址栏参数的方法

    1. window.location.href 2.正则方法 function getUrlParam(name) { var reg = new RegExp("(^|&)&quo ...

  10. Laravel excel安装与使用

    在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能 时间 2015-11-17 18:40:56  Laravel学院 原文  http://lar ...