初始化订阅主要是由分发代理分发和应用快照代理之前生成的快照,所以优化的主体是分发代理。
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 复制
, 性能优化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?