[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Reconstructing a file on checkout and SVN scaling

From: Garrett Rooney <rooneg_at_electricjellyfish.net>
Date: 2005-03-23 15:12:05 CET

Brad O'Hearne wrote:
> After reading the documentation that generally describes how files in
> SVN are stored (by storing diffs and references to previous versions),
> and after doing some poking around in the files created in a
> filesystem-type repository, I've begun wondering about how SVN scales.
> Suppose I have a file added to subversion at revision 1, and it is
> changed 5000 times, with each change committed individually. When I
> checkout revision 5001 of that file from subversion, does subversion
> have to reconstruct this file by examining every change in sequence from
> revision 1? Will this result in a substantially increased checkout time
> to reconstruct this file to its proper revision?
>
> There is obviously a question aimed at scaling. In a large system, if
> the above scenario is true, there exists the possibility of coming to a
> grinding halt with many files changed over many revisions. Merely
> checking out a project would be a fairly intensive operation.
>
> I'm sure I am missing something. I was hoping some of the svn gurus out
> there could educate me as to how subversion handles this.

Depending on which back end filesystem you're using the answer is
different. In a BDB based filesystem the HEAD revision (most recent
version) is stored as fulltext, since that's what you usually want to
see, and deltas are applied only when you need previous revisions. In
an FSFS based repository you do indeed have to start at the initial
version and apply deltas forward, but the deltas are stored in such a
way so as to only require applying of log(n) deltas to get to any given
version of a file. See
http://svn.collab.net/repos/svn/trunk/notes/skip-deltas for detailed
notes on how the FSFS version of this works.

-garrett

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Mar 23 15:18:53 2005

This is an archived mail posted to the Subversion Users mailing list.