我有一个使用事务复制的应用程序。我们正在使用快照来初始化订阅。所有发布者和订阅者都使用 SQL Server 2008。
由于我们的部署工作方式,我最终不得不在每次构建时重新初始化订阅者。这既耗时又会惹恼业务,因此我必须确保我们的开发人员了解他们的更改将对快照大小产生的影响以及应用它们所需的时间。我还想衡量我对发布和代理(bcp 线程、批处理大小等)所做的设置更改的影响。
我要捕获的指标是:
- 为每个发布生成的快照的大小。
- 生成快照所花费的时间。
- 在订阅者应用快照所花费的时间。
是否可以通过查询分布得到这些信息?我意识到我可以在生成快照后通过查看文件系统来获取快照大小,但我希望尽可能避免这种情况。
您无法使用 T-SQL 获取此类指标。不过,您可以使用 T-SQL 检查复制状态。
根据您的出版物数据库的大小(对于同一网络中的小型数据库,您甚至不应该查看时间/大小,因为它会非常快),您可以按照以下步骤进行粗略估计(球场图) 生成快照的大小和时间并应用于订阅者:
注意:我将重点放在粗略估计上,因为根据您正在复制的内容,例如存储过程、索引、约束等,还会生成其他文件。
BCP OUT
从发布数据库和数据中选择行数最高的前 10 篇(取决于您 - 您选择了多少)文章。这将更好地判断快照代理的空间需求。这将是资源密集型操作,因此应安排在服务器的安静活动期间。注意:上面将为您提供 BCP 所用的估计时间和 BCP 文件的大小。
所以以上几点会回答你第一点和第二点。
现在要获取将快照应用到订阅者所花费的时间,您必须
bcp in
从指定 SUBSCRIBER_SERVER_NAME 的发布者服务器运行通过这种方式,您可以估计将快照应用到订阅者需要多长时间。