Prompted by a question on users I wondered how SQLite's vacuum
(http://sqlite.org/lang_vacuum.html) would affect wc.db size.  On a
Subversion trunk working copy I have been using for months the size was
reduced from 2.3MB to 1.3MB which isn't really a significant change.

For a further test I checked-out a ^/subversion/branches working copy
for a wc.db of 93MB with 121738 rows, I made it sparse with 66046 rows
and it was still 93MB, then I ran vacuum and it was reduced to 51MB.  I
have a gcc working copy with some subtrees switched to an empty
directory.  There vacuum reduced wc.db from 47MB to 8.1MB.
So it appears that vacuum is interesting if the number of rows decreases
dramatically.

SQLite has auto_vacuum but it comes with a warning that it may make
fragmentation worse (http://sqlite.org/pragma.html#pragma_auto_vacuum)
so it's not clear whether we should enable it.  Perhaps we should add a
"vacuum" to cleanup?  A full vacuum rewrites all the tables so it's not
a trivial operation but it is reasonably fast for the working copies on
local disk that I tried.

-- 
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download

Reply via email to