[Chandler-dev] new --mvcc performance feature (more) (fwd)
Andi Vajda
vajda at osafoundation.org
Wed Jan 3 17:03:55 PST 2007
Reposted with permission :)
Andi..
---------- Forwarded message ----------
Date: Wed, 03 Jan 2007 19:48:48 -0500
From: Andre Mueninghoff <andre_mueninghoff at fastmail.fm>
To: Andi Vajda <vajda at osafoundation.org>
Subject: Re: [Chandler-dev] new --mvcc performance feature (more)
Hi Andi,
Wow, it's like a whole new and different application! Pretty much all
functions seem faster, many of them MUCH faster. A sync of my nine
collections (170+ items total) went from over 5 minutes to less than
one. Amazing. (Hmm, maybe if I use more than nine collections now, I
won't have to restart the restore of the 10th collection and upwards
after they time out.)
Hope you don't mind a direct email...I didn't want to clutter up the dev
list with fan mail. I won't (I hope) always be futzing around with
Chander in my evenings, but I happened to have seen your updates
yesterday evening and this evening (EDT), and had to give it a spin.
Enjoy, Andre
On Wed, 3 Jan 2007 14:09:36 -0800 (PST), "Andi Vajda"
<vajda at osafoundation.org> said:
>
> I forgot to say in my previous message about --mvcc that to use this new
> feature, a new version of chandlerdb is necessary, version 0.6-69.
>
> Use 'make chandlerdb' to upgrade after your next 'svn update'.
>
> Andi..
>
> ---------- Forwarded message ----------
>
> In version 4.5.20, Sleepycat (now Oracle), added support for MultiVersion
> Concurrency Control (MVCC) to Berkeley DB.
>
> Using MVCC causes commit() to make a copy of the pages it modifies
> thereby
> allowing database readers such as cursors to operate without acquiring
> read
> locks. This has three consequences:
>
> - no more deadlocks:
>
> even though chandler (Berkeley DB really) detects deadlocks and
> terminates
> the transaction of the writer causing the deadlock, not having the
> deadlock in the first place makes commit ultimately faster since it
> doesn't have to be retried until no deadlock happens. The best way
> to
> experiment with that is using the 'Test -> Restore Settings' menu
> option
> and use a .ini file that lists several collections. Chandler.log
> should
> not have any 'commit aborted by deadlock' messages and the process
> should
> complete much faster (assuming the server used delivers on its
> side).
>
> - better read throughput:
>
> item loading, cursor-based iterations such as history, kind queries,
> etc... are faster since they don't have to acquire (and wait) for
> read locks.
>
> - more memory (cache) usage:
>
> because commit() has to copy some the pages it modifies, more cache
> is
> used by an chandler process using --mvcc.
>
> MVCC should be well suited for Chandler's use of Berkeley DB. Chandler's
> repository is versioned and old versions of data are not modified.
> Instead, new
> versions of data are written. This limits the contention for existing
> pages
> between readers and writers as well. Therefore, doing away with having to
> acquire read locks should be a performance boost.
>
> See [1] for more information about MVCC and so-called "Snapshot
> Isolation".
>
> Because this is a new feature in Berkeley DB, I felt it was safer to make
> it
> experimental and turned on via a new --mvcc command line argument (off by
> default).
>
> It would be good to turn this on on the performance tinderboxes as it's
> having a noticeable effect on performance. Also, if it proves stable (as
> it
> apparently is), I'd like to make it the default in a few weeks...
>
> Andi..
>
> [1]
> http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev
--
Andre Mueninghoff
andre_mueninghoff at fastmail.fm
More information about the chandler-dev
mailing list