Question about SERIALIZE transaction isolation

From: Christoph Rupp <cruppstahl_at_gmail.com>
Date: Wed, 17 Jun 2009 04:33:12 -0700 (PDT)
Message-ID: <330366c9-0c34-4826-a31e-896e466e0e0e_at_k2g2000yql.googlegroups.com>



Hi,

i'm nearly ready for my first release of my new concurrent, multithreaded,  ACID transactional, logical idempotent logging, lock-free database engine (key/value storage).

OK, enough buzzwords for today :)

Some of you were kind enough to help me a couple of times with my questions. This one is about the behaviour of a read-only transaction in the SERIALIZE isolation level.

TXN A:
BEGIN
INSERT (a, b)

        TXN B:
        BEGIN
        FIND (a)

Does the lookup of an un-committed item return KEY_NOT_FOUND or does it create a transaction conflict?

Some background: In my Database all transaction conflicts are discovered in memory, without accessing the buffers. My Transactions do not lock each other or keep locks during their life time. Currently, if there's a conflict, my insert/erase functions return an error (TXN_CONFLICT).

I did some research about the SERIALIZE isolation level but found documentation which mentions that a lookup would cause a wait (http:// www.redhat.com/docs/manuals/database/RHDB-2.0-Manual/admin_user/xact-serializable.html). But i think that it's annoying when most range queries fail because of conflicts. I think it's better if the uncommitted key is ignored (only for lookups).

Thanks
Christoph

PS: you see that i'm wearing a developer hat, i'm not a DB admin or SQL guru... Received on Wed Jun 17 2009 - 13:33:12 CEST

Original text of this message