On Wed, Jun 01, 2005 at 08:40:35PM +0200, Rodrigo Schmidt wrote:
Hi Niels (and others),
Thank you very much for the help.
The MonetDB/MIL server indeed only comes with the handles to build transaction support (such as locking etc). The SQL server complements this with full transaction support. This is based on Optimistic Concurrency Control. A transaction simply starts and at the end checks the used columns where not changed by other transactions during its lifetime. All changes are then logged to a writeahead log and once this is completed the 'commit' is done.
Does this mean that a transaction can be aborted by the time the client issues a commit request??
Indeed, but also 'classic 2PL' can still abort (allthough only because of completely different reasons).
Wasn't it better to implement classic 2PL (two-phase locking) for an MMDB? At least the early papers in main memory databases advocate using simple 2PL with coarse lock granularity, since transactions execute faster and concurrency becomes less important.
The current 'occ' usually works well, ie no lock overhead and no deadlock detection. Also the current scheme has a very simple 'abort',ie just throw away the current copies. But I agree its far from perfect and we have started some work on a 'simple' lock based version. Niels
Thanks, Rodrigo
-- Niels Nes, Centre for Mathematics and Computer Science (CWI) Kruislaan 413, 1098 SJ Amsterdam, The Netherlands room C0.02, phone ++31 20 592-4098, fax ++31 20 592-4312 url: http://www.cwi.nl/~niels e-mail: Niels.Nes@cwi.nl