Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: serializable transaction problem

Re: serializable transaction problem

From: Thomas Kyte <tkyte_at_us.oracle.com>
Date: Thu, 23 Dec 1999 13:06:15 -0500
Message-ID: <h0p46sc3jcbj6chu6to4nb0dpmsqf5j66l@4ax.com>


A copy of this was sent to "Stanislav Benda" <si_bendovi_at_hotmail.com> (if that email address didn't require changing) On Thu, 23 Dec 1999 11:24:10 -0600, you wrote:

>alter session set isolation_level = serializable;
>
>change isolation level, so there is no need to explicitly issue locks
>anymore. Problem is, that "automatic" locks, locking whole table, so it
>decreasing concurency to make serializable transactions virtually unusable.
>I did following experiment with 7.3.4. Does all versions having the same
>problem, or is it getting better in 8?
>With 7.3.4 behavior would using serialization kill almost all transactions
>and make server unusable, because of too many serialization conflicts.
>Imagine working with table with one million rows and any access to single
>row, would lock out access to rest of 999999 rows.
>

alter session set isolation_level = serializable;

does *not* lock tables. setting

serializable=true

in the init.ora would -- allowing only for 1 updater at a time per table.

isolation_level = serializable is highly concurrent (we use it for our TPC-C's)

>
>Behavior is:
>
>One session do not see changes in database (DML) which are done by other
>session, even if those are commited. This sounds very cool, but I did some
>experiments:
>
>it is true, that one session do not see any, even commited, changes from
>other sessions. It is true, that session could not issue any DML command
>which touching data modified by other session. In the other words:
>
>Transaction one change one record and do not commit.
>Transaction two try to change the same record and this update immediately
>fail. This is very good, maybe better than GemStone aproach, because I have
>error immediatelly, so no problems with finding what was wrong later on
>commit.
>
>Unfortunately, there are side effects:
>
>If some other transaction than mine after my commit or rollback updated,
>inserted or deleted any record in table "a" and regardles if this
>transaction is commited, mine transaction could not do any insert, update,
>delete into table "a". Only chance is to commit or rollback and try again.
>But this need again interaction with user to check if user is still
>interested in this transaction. In the other words, serialization is
>implemented by some kind of underlined table level locking, which decreasing
>concurency a lot.
>

can you post a test case... some scripts to run in sqlplus?

>Stan
>
>
>
>

--
See http://osi.oracle.com/~tkyte/ for my columns 'Digging-in to Oracle8i'... Current article is "Part I of V, Autonomous Transactions" updated June 21'st  

Thomas Kyte                   tkyte_at_us.oracle.com
Oracle Service Industries     Reston, VA   USA

Opinions are mine and do not necessarily reflect those of Oracle Corporation Received on Thu Dec 23 1999 - 12:06:15 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US