优化SVN中的SVNAdmin验证
Posted
技术标签:
【中文标题】优化SVN中的SVNAdmin验证【英文标题】:Optimize SVNAdmin Verify in SVN 【发布时间】:2013-03-21 13:48:31 【问题描述】:我在我工作的企业中的 SVN 服务器中有一个大型存储库。我需要每天验证这个存储库的完整性,以检查 SGBD 是否存在一些不稳定性或破裂。
我正在使用提示命令行“svnadmin path_to_my_repository”来验证我的存储库的完整性。
问题是:我的存储库怎么这么大(大约 23GB,有 28.029 个修订版),这个操作需要很长时间才能完成。
问题是:我如何优化此操作以减少实际花费的时间?或者有什么其他方法可以让我用更少的时间验证我的存储库的完整性?
一些额外信息:
安装SVN Repository的操作系统为:Windows Server 2008 我用来存储我的存储库的 SVN 服务器是:VisualSVN 服务器管理器 2.5.7 “svnadmin path_to_my_repository”命令实际上需要大约 18~24 小时。【问题讨论】:
【参考方案1】:“svnadmin verify”命令有几个不同的参数。其中之一是“--revision”。所以你应该为你拥有的每个存储库做些什么,找出一种方法来获取最近 N 天(如果每天运行,可能是最后 7 天)修改的修订列表,然后只验证这些。
List of files changed since a certain date using SVN
您仍应定期(每周?每月?)对整个存储库进行完整的“svnadmin 验证”。全面检查的频率应确保您在遇到问题时可以从备份集中提取损坏的修订版。
或者,如果您使用“svnadmin hotcopy”并将该 hotcopy 推送到第二组主轴(或第二台服务器),您可以让 hotcopy 得到验证。这将消除主磁盘的负载。
【讨论】:
嘿,看起来不错!也许我可以将您的建议与我的建议结合起来,进一步优化我的任务。谢谢。【参考方案2】:我发现最快的解决方案是编写一个脚本来并行调用 svn 命令 (svnadmin path_to_my_repository)。然后对于每个线程,我为我的 SVNServer 中的不同存储库调用命令“验证”。这不是我正在寻找的解决方案,但我通过它获得了一些性能提升。如果有人知道仅使用 svnadmin 命令优化此任务的解决方案,请告诉我们。谢谢。
【讨论】:
这应该会触发服务器上的大量硬盘访问,因此在许多情况下会减慢全局验证速度吗?至少,仔细限制并行线程的数量应该是有用的。以上是关于优化SVN中的SVNAdmin验证的主要内容,如果未能解决你的问题,请参考以下文章