On Wed, May 26, 2010 at 4:35 PM, Randall Leeds <[email protected]> wrote:
> On Wed, May 26, 2010 at 13:29, Robert Buck <[email protected]> wrote:
>> On Wed, May 26, 2010 at 3:00 PM, Randall Leeds <[email protected]> 
>> wrote:
>>> 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?
>
> Yes.
>
>>
>> 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?
>
> If I understand correctly the answer is 'yes'. Meanwhile, new writes
> still hit the old database file as the compactor walks the old tree.
> If there are new changes when the compactor finishes it will walk the
> new changes starting from the root. Typically this process quickly
> gets faster and faster on busy databases until it catches up
> completely and the switch can be made.
>
> That said, you can construct an environment where compaction will
> never finish, but I haven't seen reports of it happening in the wild.

Thank you. I am just trying to translate my understanding from years
of experience with ObjectStore to the simpler document-orientation in
Couch. Your feedback helps.

Reply via email to