首页 > 代码库 > SQL Server提高事务复制效率优化(三)订阅初始化优化

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

初始化订阅主要是由分发代理分发和应用快照代理之前生成的快照,所以优化的主体是分发代理。
1、初始化订阅
  • 首先在本地创建一个订阅,发布服务器、分发服务器和订阅服务器都在同一台服务器上,仅为了测试生产环境不要这样做
技术分享
技术分享
  • 分发服务器参数配置
技术分享
技术分享
  • 初始化订阅运行时间

技术分享

技术分享
技术分享
需要注意几点:
  • 快照代理实际执行的是BCP程序,生成快照文件:
技术分享
技术分享
  • 快照代理会在快照生成的初始阶段使用锁,虽然时间很短,但是影响范围较大。
  • 在快照生成过程中,不能对表的结构进行更改。
2.优化参数测试
  • 新建一个分发代理配置文件,命名为“分发代理优化参数 ”
  • 查找这个代理配置文件的profile_id
SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =3      
或者 
EXEC sp_help_agent_profile @agent_type= 3
  • 修改配置文件
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = MaxBcpThreads, @parameter_value = 4     
   
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = BcpBatchSize, @parameter_value = 100000
                             
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = PollingInterval, @parameter_value = 500000
  • 优化后订阅库生成测试结果,从测试结果上看并没有明显的优化。MaxBcpThreads并没有实现多线程的数据导入,后台查询也只有一个会话在执行bulk in操作,BcpBatchSize对参数影响较小,建议设置的大一些;另外两个参数不影响订阅数据库的生成效率。其实订阅库生成是整个过程的性能瓶颈所在,如果能使用多线程还是不错的解决方法,希望看到博客的同学有好方法提供一下。

 技术分享

 

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