我的项目目前正在使用svn存储库,它每天都会获得数百个新版本。存储库驻留在Win2k3服务器上,通过Apache/mod_dav_svn提供服务。
我现在担心,随着时间的推移,由于太多的修改,性能会下降。
这种恐惧是合理的吗?
我们已经计划升级到1.5,所以在一个目录中有数千个文件在长期内不会成为问题。
Subversion on存储了两个修订版之间的增量(差异),因此这有助于节省大量空间,特别是当您只提交代码(文本)而不提交二进制文件(图像和文档)时。
这是否意味着为了检出文件foo.baz的修订版10,svn将采用修订版1,然后应用增量2-10?
发布于 2008-09-25 01:54:19
你有什么类型的回购?FSFS还是BDB?
(让我们暂时假设FSFS,因为这是默认设置。)
在FSFS的情况下,每个版本都存储为与以前版本不同的版本。所以,你可能会认为,是的,经过多次修改后,它会非常慢。
然而,事实并非如此。FSFS使用所谓的“跳过增量”来避免在以前的转速上进行太多的查找。
(因此,如果您使用的是FSFS代码库,Brad Wilson的答案是错误的。)
在BDB repo的情况下,head (最新的)修订是全文的,但早期的修订是作为与HEAD的一系列差异构建的。这意味着每次提交后都必须重新计算以前的转速。
有关更多信息,请访问:http://svn.apache.org/repos/asf/subversion/trunk/notes/skip-deltas
附注:我们的repo大约是20 we,大约有35,000个修订版,我们没有注意到任何性能下降。
发布于 2008-09-24 15:14:44
Subversion将最新的版本存储为全文,并具有向后的差异。这意味着head的更新总是很快,而且您逐渐为之付出的代价是在历史上看得越来越远。
发布于 2008-09-24 15:17:49
我个人没有在实际项目中处理过代码库大于80K LOC的Subversion存储库。我实际拥有的最大的存储库大约是1.2G,但这包括了项目使用的所有库和实用程序。
我认为日常使用不会受到太大影响,但任何需要查看不同版本的东西都可能会稍微慢一点。它可能甚至不会被注意到。
现在,从系统管理员的角度来看,有一些东西可以帮助您最小化性能瓶颈。由于Subversion主要是基于文件的系统,因此您可以这样做:
对于您的情况来说,这可能有些过分了,但这是我通常为其他文件密集型应用程序所做的。
如果你曾经“超越”Subversion,那么Perforce将是你的下一步。对于大型项目来说,它无疑是最快的源代码控制应用程序。
https://stackoverflow.com/questions/127692
复制相似问题