incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Buck <buck.rober...@gmail.com>
Subject Re: Newbie question: compaction and mvcc consistency?
Date Wed, 26 May 2010 20:29:38 GMT
On Wed, May 26, 2010 at 3:00 PM, Randall Leeds <randall.leeds@gmail.com> wrote:
> On Wed, May 26, 2010 at 11:37, Robert Buck <buck.robert.j@gmail.com> wrote:
>> Here is a newbie question for you that relates MVCC, compaction, and versioning.
>>
>> I read that old versions of documents are cleaned up upon compaction.
>> I read that every b-tree root will point to a consistent snapshot of
>> the database.
>> I read that there could be readers reading three different versions
>> [of a document] at the same time [due to timing of reads vs writes].
>
> Yay!
>
>>
>> So long as reader (i) is reading a document (r), if updates to the
>> document introduce an effective change from r->s, if after 's' has
>> been added the database were compacted, what would reader (i) see?
>> Would document (r) be pulled out from under reader (i) or would the
>> document remain until such time as the reader no longer refers to it?
>
> The switch to the new, compacted database won't happen so long as
> there are references to the old one. (r) will not disappear until (i)
> is done with it.

Curious, you said "switch to the new [database]". Does this imply that
compaction works by creating a new database file adjacent to the old
one?

If this is what you are suggesting, I have another question... I also
read that compaction process may never catch up with the writes if
they never let up. So along this specific train of thought, does Couch
perform compaction by walking through the database in a forward-only
manner?

Thanks so much.

Mime
View raw message