我的项目是目前使用svn库,其收益的几百新修订的每一天。该仓库位于Win2k3-服务器和服务是通过Apache/mod_dav_svn.

我现在担心的是,随着时间的推移的业绩将会降低,由于太多的修订。
这是合理的恐惧?
我们已经是规划的升级到1.5,所以具有成千上万的文件中的一个目录将不会是一个问题是在长期。

颠复存在三角洲(差异),2之间的修订,所以这有助于节省大量的空间,特别是如果只提交代码(文本)和没有的二进制文件(图像和文档).

这是不是意味着为了检查了修订10的文件foo。baz,svn会采取修订1和随后应用三角洲的2-10?

有帮助吗?

解决方案

你有什么类型的回购? FSFS或BDB?

(我们现在假设FSFS,因为这是默认值。)

对于FSFS,每个修订版本都存储为前一个版本的差异。所以,你会认为是的,经过多次修改后,它会非常缓慢。

但事实并非如此。 FSFS使用所谓的“跳过增量”避免在以前的转速上进行太多的查询。

(所以,如果你使用FSFS回购,Brad Wilson的回答是错误的。)

在BDB回购的情况下,HEAD(最新)版本是全文的,但早期版本是针对头部的一系列差异构建的。这意味着每次提交后都必须重新计算以前的转速。

欲了解更多信息: http://svn.apache。组织/回购/ ASF /颠覆/中继/笔记/跳过三角洲

P.S。我们的回购大约是20GB,大约有35,000个版本,我们没有注意到任何性能下降。

其他提示

Subversion将最新版本存储为全文,具有向后看的差异。这意味着对头部的更新总是很快,而你逐步支付的费用在历史上看得越来越远。

我个人没有处理与颠复仓库的用代码基大于80K LOC为实际的项目。最大的储存库事实上我已经是大约1.2的演出,但这包括了所有的图书馆和公用事业,该项目使用。

我不认为日常使用情况将影响到那么多,但任何需要通过不同的修订可能放慢一点点。它甚至可能不明显。

现在,从系统管理员的观点,有几件事情,可以帮助你尽量减少业绩的瓶颈。由于颠复主要是基于文件的系统,可以这样做:

  • 把实际的资源库在不同的驱动器
  • 确保没有的文件锁定应用程序,比其他svn,工作的驱动器上
  • 使驱动器的至少7 500人转。你可以尝试得到10000转,但是它可能被矫枉过正
  • 更新局域网,以千兆,如果每个人都在同一个办公室。

这可能是矫枉过正的为你的情况,但是这就是我们通常做的其他文件密集型应用程序。

如果你曾经"不"颠复,然后 必然 将你的下一个步骤。它的手下最快源的控制应用程序非常大的项目。

我们正在运行一个带有千兆字节代码和二进制文件的subversion服务器,并且它有超过两万个版本。没有减速。

Subversion仅存储2个版本之间的增量(差异),因此这有助于节省大量空间,特别是如果您只提交代码(文本)而没有二进制文件(图像和文档)。

此外,我已经看过许多使用svn的非常大的项目,从不抱怨性能。

也许你担心结账时间?那么我想这真的是一个网络问题。

哦,我已经使用2Gb +的东西(代码,imgs,docs)处理过CVS存储库,并且从未遇到过性能问题。由于svn对cvs有很大的改进,我认为你不应该担心。

希望它能让你的思绪变得轻松一点;)

我不认为我们的颠覆会因衰老而减缓。我们目前有几个TeraBytes数据,主要是二进制数据。我们每天结账/提交最多50千兆字节的数据。总共我们目前有50000个修订版。我们使用FSFS作为存储类型,并直接连接到SVN :( Windows服务器)或通过Apache mod_dav_svn(Gentoo Linux Server)。

我无法确认这会让svn随着时间的推移而减速,因为我们设置了一个干净的服务器来进行性能比较,我们可以比较一下。我们无法测量显着的降级。

但是我不得不说默认情况下我们的颠覆是非常慢的,显然它是我们尝试使用另一台计算机系统时的颠覆。

由于某些未知原因,subversion似乎完全是服务器CPU限制的。我们的结账/提交率限制在每个客户端15-30兆字节/秒之间,因为这样一个服务器CPU核心就完全用完了。对于几乎空的存储库(1 GigaByte,5个版本),这与我们的完整服务器(~5 TeraByte,50000版本)相同。调整如将压缩设置为0 =关闭并没有改善这一点。

我们的High Bandwith(提供~1 GigaByte / s)FC-Array空闲,其他核心空闲和网络(目前客户端为1 GigaBit / s,服务器为10 GigaBits / s)空闲。好吧不是真的空转,但如果只使用2-3%的可用容量,我称之为闲置。

看到所有组件闲置并不是真正的乐趣,我们需要等待我们的工作副本签出或签署。基本上我不知道服务器进程通过在结账/提交期间一直完全消耗一个CPU核心来做什么。

然而,我只是想找到一种调整颠覆的方法。如果无法做到这一点,我们可能需要切换到另一个系统。

因此:答案:没有SVN在性能上不会降低,因为它最初很慢。

当然,如果你不需要(高性能),你就不会有问题。 顺便说一句。以上所有适用于subversioon 1.7最新稳定版

唯一可能减速的操作是从多个修订版中读取信息的内容(例如SVN Blame)。

我不确定.....我在Centos 5.2上使用带有apache的SVN。工作正常。版本号是8230之类的东西...并且在所有客户端机器上,Commit非常慢,我们必须等待至少2分钟才能获得1kb的文件。我说的是一个没有大文件大小的文件。

然后我创建了一个新的存储库。从rev开始1.现在工作正常。快速。 使用svnadmin创建xxxxxx。 没有检查它是FSFS还是BDB ......

也许您应该考虑改善工作流程。

我不知道回购在这些条件下是否会出现性能问题,但是你能够回到理智的版本。

在您的情况下,您可能希望包含验证流程,因此团队提交团队领导者回购,并且每个团队都会向提交给只读清洁公司回购的团队经理回购提交。你必须在什么提交必须到顶部的阶段做出一个干净的选择。

这样,任何人都可以回到干净的副本,并且可以轻松浏览历史记录。合并更容易,开发人员仍然可以随心所欲地完成他们的混乱。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top