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.
