19 Concurrency Control
-
Upload
vikram-chandra -
Category
Documents
-
view
226 -
download
0
Transcript of 19 Concurrency Control
-
7/29/2019 19 Concurrency Control
1/56
Dr. Philip Cannata Data Management 1
Concurrency Control
How is concurrency control actually implemented
in a DBMS?
Locking
Timestamp
Multiversion
Phantoms
Index Locking
Rollback Demo
-
7/29/2019 19 Concurrency Control
2/56
Dr. Philip Cannata Data Management 2
Lock-Based Protocols
A lock is a mechanism to control concurrent access to a data item
Data items can be locked in two modes :
1. shared (S) mode. Used if a transaction only wants to read a
data item. Granted via an lock-S instruction.
2. exclusive (X) mode. Used if a transaction wants to read as
well as write a data item. Granted via an lock-X instruction
Lock requests are made to the concurrency-control manager.
Transaction can proceed only after request is granted.
-
7/29/2019 19 Concurrency Control
3/56
Dr. Philip Cannata Data Management 3
Lock-Based Protocols (Cont.) Lock-compatibility matrix
A transaction may be granted a lock on an item if the requestedlock is compatible with locks already held on the item by othertransactions
Any number of transactions can hold shared locks on an item,but if any transaction holds an exclusive on the item no other
transaction may hold any lock on the item. If a lock cannot be granted, the requesting transaction is made to
wait until all incompatible locks held by other transactions havebeen released. The lock is then granted.
-
7/29/2019 19 Concurrency Control
4/56
Dr. Philip Cannata Data Management 4
Lock-Based Protocols (Cont.) Example of a transaction performing locking:
T2: lock-S(A);read (A);
unlock(A);
lock-S(B);
read (B);unlock(B);
display(A+B)
Locking as above is not sufficient to guarantee serializabilityif
A andB get updated in-between the read ofA andB, the displayedsum would be wrong.
A locking protocol is a set of rules followed by all transactionswhile requesting and releasing locks. Locking protocols restrictthe set of possible schedules.
-
7/29/2019 19 Concurrency Control
5/56
Dr. Philip Cannata Data Management 5
The Two-Phase Locking Protocol
This is a protocol which ensures conflict-serializable
schedules.
Phase 1: Growing Phase
transaction may obtain locks
transaction may not release locks
Phase 2: Shrinking Phase
transaction may release lockstransaction may not obtain locks
-
7/29/2019 19 Concurrency Control
6/56
Dr. Philip Cannata Data Management 6
The Two-Phase Locking Protocol (Cont.)
Cascadingrollbackis possible under two-phaselocking. To avoid this, follow a modified protocol
called strict two-phase locking. Here a
transaction must hold all its exclusive locks until it
commits/aborts. Rigorous two-phase locking is even stricter: here
alllocks are held until commit/abort.
-
7/29/2019 19 Concurrency Control
7/56
Dr. Philip Cannata Data Management 7
The Two-Phase Locking Protocol (Cont.)
There can be conflict serializable schedules that
cannot be obtained if two-phase locking is used
but its not badmore later.
-
7/29/2019 19 Concurrency Control
8/56
Dr. Philip Cannata Data Management 8
Pitfalls of Lock-Based Protocols Consider the partial schedule
NeitherT3 norT4 can make progressexecuting lock-S(B)
causes T4 to wait forT3 to release its lock onB, while executinglock-X(A) causes T3 to wait forT4 to release its lock onA.
Such a situation is called a deadlock.
To handle a deadlock one ofT3 orT4 must be rolled backand its locks released.
-
7/29/2019 19 Concurrency Control
9/56
Dr. Philip Cannata Data Management 9
Deadlock Detection Deadlocks can be described as a wait-for graph, which consists
of a pairG = (V,E), Vis a set of vertices (all the transactions in the system)
Eis a set of edges; each element is an ordered pairTiTj.
IfTi Tjis inE, then there is a directed edge from Ti to Tj,
implying that Ti is waiting forTj to release a data item. When Ti requests a data item currently being held by Tj, thenthe edge Ti Tj is inserted in the wait-for graph. This edge isremoved only when Tj is no longer holding a data item needed
by Ti.
The system is in a deadlock state if and only if the wait-forgraph has a cycle. Must invoke a deadlock-detection algorithm
periodically to look for cycles.
-
7/29/2019 19 Concurrency Control
10/56
Dr. Philip Cannata Data Management 10
Deadlock Detection (Cont.)
Wait-for graph without a cycle Wait-for graph with a cycle
-
7/29/2019 19 Concurrency Control
11/56
Dr. Philip Cannata Data Management 11
Deadlock Recovery
When deadlock is detected : Some transaction will have to rolled back (made a victim) to
break deadlock. Select that transaction as victim that will
incur minimum cost.
Rollback -- determine how far to roll back transaction Total rollback: Abort the transaction and then restart it.
More effective to roll back transaction only as far as
necessary to break deadlock.
Starvation happens if same transaction is always chosen asvictim. Include the number of rollbacks in the cost factor to
avoid starvation
-
7/29/2019 19 Concurrency Control
12/56
Dr. Philip Cannata Data Management 12
Dead Lock DemoUser2-T5.sql
commit ;set transaction isolation level
serializable ;update emp set sal = sal + 1where empno = 7934 ;
update emp set sal = sal + 1where empno = 7839 ;
select empno, ename, sal from empwhere empno = 7934 ;
select empno, ename, sal from empwhere empno = 7839 ;
pause "Press Enter to continue"commit ;
User1-T5.sqlcommit ;set transaction isolation level
serializable ;update emp set sal = sal + 10where empno = 7839 ;
pause "Press Enter to continue" ;update emp set sal = sal + 10where empno = 7934 ;
select empno, ename, sal from empwhere empno = 7839;
select empno, ename, sal from empwhere empno = 7934;
commit ;
-
7/29/2019 19 Concurrency Control
13/56
Dr. Philip Cannata Data Management 13
Dead Lock Demo
-
7/29/2019 19 Concurrency Control
14/56
Dr. Philip Cannata Data Management 14
Dead Lock Demo
-
7/29/2019 19 Concurrency Control
15/56
Dr. Philip Cannata Data Management 15
Dead Lock Demo
-
7/29/2019 19 Concurrency Control
16/56
Dr. Philip Cannata Data Management 16
Dead Lock Demo
-
7/29/2019 19 Concurrency Control
17/56
Dr. Philip Cannata Data Management 17
Dead Lock Demo
-
7/29/2019 19 Concurrency Control
18/56
Dr. Philip Cannata Data Management 18
Oracle Block Structure
Integrity Section
Transaction Section
Item* Directory Section
Fourth ItemThird Item
Free Space
Deleted Item
Modified Item First
Item Check
INITRANSinitial number of transactionslots
MAXTRANSmaximum number of
transaction slots (default is 255)
PCTFREEhow much should be left for
growth of items, should be different for blocks
of indexes (their size doesnt change) and
blocks of tuples (their size might change)
PCTUSEDhow much is used
Extentset of adjacent blocks on a disk for a
single file
PCTINCREASEcauses the size of each
successive extent to increase geometrically by
the pctincrease value
Segmenta set of extents within a single
tablespace
FREELISTlist of blocks below PCTUSED
in a segment
FREELISTSnumber of freelists in a
segment
Tablespacelogical collection of a set of
database or index files
BUFFER_POOLKEEP, RECYCLE or
DEFAULT
Usually 2KB, 4KB, 8KB or 16 KB
*Item is either a tuple or an index node
-
7/29/2019 19 Concurrency Control
19/56
Dr. Philip Cannata Data Management 19
Timestamp-Based Protocols
Each transaction is issued a timestamp when it enters the system.
If an old transaction Ti has time-stamp TS(Ti), a new transaction
Tj is assigned time-stamp TS(Tj) such that TS(Ti) < TS(Tj).
The protocol manages concurrent execution such that the time-
stamps determine the serializability order.
In order to assure such behavior, the protocol maintains for each
data item Q two timestamp values:
W-timestamp(Q) is the largest time-stamp of any transaction
that executed write(Q) successfully. R-timestamp(Q) is the largest time-stamp of any transaction
that executed read(Q) successfully.
-
7/29/2019 19 Concurrency Control
20/56
Dr. Philip Cannata Data Management 20
Timestamp-Based Protocols (Cont.)
The timestamp ordering protocol ensures that any conflictingread and write operations are executed in timestamp order.
Suppose a transaction Ti issues a read(Q)
1. If TS(Ti) < W-timestamp(Q), then Ti needs to read a value ofQ
that was already overwritten. Hence, the read operation isaborted, and Ti is rolled back.
2. If TS(Ti) W-timestamp(Q), then the read operation is
executed, and R-timestamp(Q) is set to the maximum of R-
timestamp(Q) and TS(Ti).
-
7/29/2019 19 Concurrency Control
21/56
Dr. Philip Cannata Data Management 21
Timestamp-Based Protocols (Cont.)
Suppose that transaction Ti issues write(Q).1. If TS(Ti) < R-timestamp(Q), then the value ofQ that Ti is
producing was needed previously, and the system assumed thatthat value would never be produced. Hence, the write operationis aborted, and T
i
is rolled back.
2. If TS(Ti) < W-timestamp(Q), then Ti is attempting to write anobsolete value ofQ. Hence, this write operation is aborted, andTi is rolled back.
3. Otherwise, the write operation is executed, and W-timestamp(Q)
is set to TS(Ti).
-
7/29/2019 19 Concurrency Control
22/56
Dr. Philip Cannata Data Management 22
Step 1
Example Use of the Protocol
A partial schedule for several data items for transactions T1 , T2 ,
T3 , T4 , T5 with timestamps t1 < t2 < t3 < t4 < t5
T1t1 T2
t2 T3t3 T4
t4 T5t5
read2(Y)read1(X)
read3(Y)
write4(Y)write5(Z)read6(Z)
read7(Y)abort
read8(X)write9(Z)
abort write(Y)
write(Z)
R W R W R W
1
t5
2
t2
4
t3
6
t5
5
t3
X Y Z
Now this needs
to be rolled
back
-
7/29/2019 19 Concurrency Control
23/56
Dr. Philip Cannata Data Management 23
Correctness of Timestamp-Ordering Protocol
The timestamp-ordering protocol guarantees serializability
since all the arcs in the precedence graph are of the form:
Thus, there will be no cycles in the precedence graph
Timestamp protocol ensures freedom from deadlock as no
transaction ever waits.
But the schedule may not be cascade-free, and may not
even be recoverable.
transaction
with smaller
timestamp
transaction
with larger
timestamp
-
7/29/2019 19 Concurrency Control
24/56
Dr. Philip Cannata Data Management 24
Recoverability and Cascade Freedom Problem with timestamp-ordering protocol:
Suppose Ti aborts, but Tj has read a data item written by Ti Then Tjmust abort; ifTjhad been allowed to commit earlier,
the schedule is not recoverable.
Further, any transaction that has read a data item written by Tjmust abort
This can lead to cascading rollback --- that is, a chain ofrollbacks
Solution:
A transaction is structured such that its writes are all performed
at the end of its processing All writes of a transaction form an atomic action; no transaction
may execute while a transaction is being written
A transaction that aborts is restarted with a new timestamp
-
7/29/2019 19 Concurrency Control
25/56
Dr. Philip Cannata Data Management 25
Multiversion Schemes
Multiversion schemes keep old versions of data item toincrease concurrency.
Multiversion Timestamp Ordering
Multiversion Two-Phase Locking
Each successful write results in the creation of a newversion of the data item written.
Use timestamps to label versions.
When a read(Q) operation is issued, select an appropriateversion ofQ based on the timestamp of the transaction,
and return the value of the selected version. reads never have to wait as an appropriate version is
returned immediately.
-
7/29/2019 19 Concurrency Control
26/56
Dr. Philip Cannata Data Management 26
Multiversion Timestamp Ordering
Each data item Q has a sequence of versions Q1 < Q2,....,< Qm. Each version Qkcontains three data fields:
Content -- the value of version Qk.
W-timestamp(Qk) -- timestamp of the transaction thatcreated (wrote) version Qk
R-timestamp(Qk) -- largest timestamp of a transactionthat successfully read version Qk
when a transaction Ticreates a new version QkofQ, Qk'sW-timestamp and R-timestamp are initialized to TS(Ti).
R-timestamp ofQk is updated whenever a transaction Tjreads Qk, and TS(Tj) > R-timestamp(Qk).
-
7/29/2019 19 Concurrency Control
27/56
Dr. Philip Cannata Data Management 27
Multiversion Timestamp Ordering (Cont) The multiversion timestamp scheme presented next ensures
serializability.
Suppose that transaction Tiissues a read(Q) orwrite(Q) operation.Let Qk denote the version ofQwhose write timestamp is the
largest write timestamp less than or equal to TS(Ti).
1. If transaction Ti does a read(Q), then the value returned is the
content of version Qk.2. If transaction Ti does a write(Q), and if TS(Ti)
-
7/29/2019 19 Concurrency Control
28/56
Dr. Philip Cannata Data Management 28
T1
t1 T2
t2 T3
t3 T4
t4 T5
t5
read2(Y)->Y0read1(X)->X0
read3(Y)->Y0
write4(Y)
write5(Z)
read6(Z)->Z1
read7(Y)->Y0
abortread8(X)->X0
write9(Z)
abortwrite(Y)
write(Z)
Example Use of the ProtocolA partial schedule for several data items for transactions T1, T2,
T3, T4, T5, with timestamps t1 < t2 < t3 < t4 < t5
Version 0 Version 1
C R W C R W
X X0 1:t5
Y Y0 2:t2 Y1 4:t3
Z Z0 Z1 6:t5 5:t3
Still have
cascading
rollback
-
7/29/2019 19 Concurrency Control
29/56
Dr. Philip Cannata Data Management 29
Multiversion Two-Phase Locking
Differentiates between read-only transactions and update
transactions Update transactions acquire read and write locks, and hold
all locks up to the end of the transaction. That is, updatetransactions follow rigorous two-phase locking.
Each successful write results in the creation of a new
version of the data item written. each version of a data item has a single timestamp
whose value is obtained from a counter(SCNSystemChange Number) that is incremented during commit
processing.
Read-only transactions are assigned a timestamp byreading the current value of(SCN) before they startexecution; they follow the multiversion timestamp-ordering
protocol for performing reads.
-
7/29/2019 19 Concurrency Control
30/56
Dr. Philip Cannata Data Management 30
Multiversion Two-Phase Locking (Cont.)
When an update transaction wants to read a data item, it obtains a
shared lock on it, and reads the latest version that does not have atimestamp of.
When it wants to write an item, it obtains X-lock on it then creates anew version of the item and sets this version's timestamp to .
When update transaction Ti
completes, commit processing occurs:
Ti sets timestamp on the versions it has created to (SCN) + 1
Ti increments (SCN) by 1
Read-only transactions that start afterTi increments (SCN) will seethe values updated by Ti.
Read-only transactions that start before Ti increments the(SCN) will see the value before the updates by Ti.
Only serializable schedules are produced.
-
7/29/2019 19 Concurrency Control
31/56
Dr. Philip Cannata Data Management 31
Example Use of the Protocol
Locked by Version 0 Version 1
C SCN C SCN
X X0 0
Y 4:T3 Y0 0 Y1
Z 5:T3 Z0 0 Z1
Apartial schedule for several data items for transactions T1, T2 , T3 , T4 , T5
Oracle
undo log
T1 T2 T3 T4 T5
read2(Y)->Y0read1(X)->X0
read3(Y)->Y0
write4(Y)
write5(Z)
read6(Z)->Z0read7(Y)->Y0
abortread8(X)->X0
write9(Z)
abortwrite(Y)
write(Z)No cascadingrollback
SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-
MM-DD HH24:MI:SS') FROM v$database;
T ti I l ti L l S i li bl
-
7/29/2019 19 Concurrency Control
32/56
Dr. Philip Cannata Data Management 32
Transaction Isolation Level SerializableUser2-T6.sql
commit ;
set transaction isolation levelserializable ;
update emp set sal = sal + 1where empno = 7369 ;
pause "Press Enter to continue"
update emp set sal = sal + 1
where empno = 7369 ;commit ;
User1-T6.sqlcommit ;
set transaction isolation levelserializable ;
select empno, ename, sal from empwhere empno = 7369 ;
pause "Press Enter to continue"
select empno, ename, sal from empwhere empno = 7369 ;
commit ;
Demo User1 User2 User1 User2
-
7/29/2019 19 Concurrency Control
33/56
Dr. Philip Cannata Data Management 33
Demo User1, User2, User1, User2
Step 1
to here
Step 2
to here
Step 3
to here
Step 4
to here
SAL is
806 at
start
Demo User1 User2 User2 User1
-
7/29/2019 19 Concurrency Control
34/56
Dr. Philip Cannata Data Management 34
Demo User1, User2, User2, User1
Step 1
to here
Step 2
to here
Step 3
to here
Step 4
to here
SAL is
808 at
start
Demo User2 User1 User2 User1
-
7/29/2019 19 Concurrency Control
35/56
Dr. Philip Cannata Data Management 35
Demo User2, User1, User2, User1
Step 1
to hereStep 2
to here
Step 3
to here
Step 4
to here
SAL is
810 at
start
Transaction Isolation Level Serializable
-
7/29/2019 19 Concurrency Control
36/56
Dr. Philip Cannata Data Management 36
Transaction Isolation Level Serializable
User1-T7.sqlcommit ;
set transaction isolation levelserializable ;
update emp set sal = sal + 1where empno = 7369 ;
pause "Press Enter to continue"
update emp set sal = sal + 1
where empno = 7369 ;commit ;
User2-T7.sqlcommit ;
set transaction isolation levelserializable ;
update emp set sal = sal + 1where empno = 7369 ;
pause "Press Enter to continue"
update emp set sal = sal + 1where empno = 7369 ;
commit ;
The one that starts
second is aborted!
Demo User1 User2 User1 User2
-
7/29/2019 19 Concurrency Control
37/56
Dr. Philip Cannata Data Management 37
Demo User1, User2, User1, User2
Step 1
to here
Step 2
to here
Step 3
to here
Step 4
to here
After
Step 3to here
U d t I t d D l t Ph t
-
7/29/2019 19 Concurrency Control
38/56
Dr. Philip Cannata Data Management 38
Update, Insert and Delete Phantoms If two-phase locking is used :
A delete operation may be performed only if the transactiondeleting the tuple has an exclusive lock on the tuple to bedeleted.
A transaction that inserts a new tuple into the database is givenan X-mode lock on the tuple
Insertions and deletions can lead to the phantom phenomenon. A transaction that scans a relation (e.g., find all accounts in
Perryridge) and a transaction that inserts a tuple in the relation(e.g., insert a new account at Perryridge) may conflict in spiteof not accessing any tuple in common.
If only tuple locks are used, non-serializable schedules canresult: the scan transaction may not see the new account, yetmay be serialized before the insert transaction.
U d t I t d D l t Ph t (C t )
-
7/29/2019 19 Concurrency Control
39/56
Dr. Philip Cannata Data Management 39
Update, Insert and Delete Phantoms (Cont.)
The transaction scanning the relation is reading information that indicates what
tuples the relation contains, while a transaction inserting a tuple updates the same
information.
The information should be locked.
One solution:
Associate a data item with the relation, to represent the information about
what tuples the relation contains. Transactions scanning the relation acquire a shared lock in the data item,
Transactions inserting or deleting a tuple acquire an exclusive lock on the
data item. (Note: locks on the data item do not conflict with locks on
individual tuples.)
Above protocol provides very low concurrency for insertions/deletions.
Index locking protocols provide higher concurrency while
preventing the phantom phenomenon, by requiring locks
on certain index buckets. But they require every table to have an index.
U d Ph D
-
7/29/2019 19 Concurrency Control
40/56
Dr. Philip Cannata Data Management 40
Update Phantom Demo
User2-T8.sqlupdate emp set sal = 5000
where empno = 7844 ;
commit ;
User1-T8.sqlselect empno, ename, sal from empwhere sal > 4000;
pause "Press Enter to continue" ;
select empno, ename, sal from empwhere sal > 4000;
Demo User1 User2 User1
-
7/29/2019 19 Concurrency Control
41/56
Dr. Philip Cannata Data Management 41
Demo User1, User2, User1
Step 1
to here
Step 2
to here
Step 3
to here
U d Ph D
-
7/29/2019 19 Concurrency Control
42/56
Dr. Philip Cannata Data Management 42
Update Phantom Demo
Reset demo database
U d t Ph t D
-
7/29/2019 19 Concurrency Control
43/56
Dr. Philip Cannata Data Management 43
Update Phantom Demo
User2-T9.sqlupdate emp set sal = 5000
where empno = 7844 ;
commit ;
User1-T9.sqlcommit ;
set transaction read only ;
select empno, ename, sal from empwhere sal > 4000;
pause "Press Enter to continue" ;
select empno, ename, sal from empwhere sal > 4000;
Demo User1 User2 User1
-
7/29/2019 19 Concurrency Control
44/56
Dr. Philip Cannata Data Management 44
Demo User1, User2, User1
Step 1
to here
Step 2
to here
Step 3
to here
-
7/29/2019 19 Concurrency Control
45/56
Dr. Philip Cannata Data Management 45
Weak Levels of Consistency in SQL
SQL allows non-serializable executions
Repeatable read: allows only committed records to be
read, and repeating a read should return the same value
(so read locks should be retained)
However, the phantom phenomenon need not be
prevented
T1 may see some records inserted by T2, but
may not see others inserted by T2
Read committed: same as degree two consistency, but
most systems implement it as cursor-stability
Read uncommitted: allows even uncommitted data to
be read
-
7/29/2019 19 Concurrency Control
46/56
Dr. Philip Cannata Data Management 46
Concurrency in Index Structures
Indices are unlike other database items in that their only job is to
help in accessing data. Index-structures are typically accessed very often, much more
than other database items.
Treating index-structures like other database items leads to lowconcurrency. Two-phase locking on an index may result intransactions executing practically one-at-a-time.
It is acceptable to have nonserializable concurrent access to anindex as long as the accuracy of the index is maintained.
In particular, the exact values read in an internal node of a
B+-tree are irrelevant so long as we land up in the correct leafnode.
There are index concurrency protocols where locks on internalnodes are released early, and not in a two-phase fashion.
-
7/29/2019 19 Concurrency Control
47/56
Dr. Philip Cannata Data Management 47
Concurrency in Index Structures (Cont.) Example of index concurrency protocol:
Use crabbing instead of two-phase locking on the nodes ofthe B+-tree, as follows. During search/insertion/deletion:
First lock the root node in shared mode.
After locking all required children of a node in sharedmode, release the lock on the node.
During insertion/deletion, upgrade leaf node locks toexclusive mode.
When splitting or coalescing requires changes to aparent, lock the parent in exclusive mode.
Above protocol can cause excessive deadlocks. Betterprotocols are available; see Section 16.9 for one suchprotocol, the B-link tree protocol
-
7/29/2019 19 Concurrency Control
48/56
Dr. Philip Cannata Data Management 48
Oracle
Concurrency Control in OracleFrom Oracle8i
Application
-
7/29/2019 19 Concurrency Control
49/56
Dr. Philip Cannata Data Management 49
Concurrency Control in Oracle ppDevelopers Guide -Fundamentals
Dirty
Write
The
possibility
that two
transactions
might both
perform an
update on
the same
row before
eithertransaction
terminates
Concurrency Control in OracleFrom Oracle8iApplication
-
7/29/2019 19 Concurrency Control
50/56
Dr. Philip Cannata Data Management 50
Concurrency Control in Oracle ppDevelopers Guide -Fundamentals
Choosing an Isolation Level
Application designers and developers should choose an isolation level that is appropriate to the
specific application and workload, and may choose different isolation levels for differenttransactions. The choice should be based on performance and consistency needs, and
consideration of application coding requirements.
For environments with many concurrent users rapidly submitting transactions, designers must
assess transaction performance requirements in terms of the expected transaction arrival rate and
response time demands, and choose an isolation level that provides the required degree ofconsistency while satisfying performance expectations. Frequently, for high performance
environments, the choice of isolation levels involves making a trade-off between consistency and
concurrency (transaction throughput).
Both Oracle isolation modes provide high levels of consistency and concurrency (and
performance) through the combination of row-level locking and Oracle's multi-version
concurrency control system. Because readers and writers don't block one another in Oracle, while
queries still see consistent data, both READ COMMITTED and SERIALIZABLE isolation
provide a high level of concurrency for high performance, without the need for reading
uncommitted ("dirty") data.
Concurrency Control in OracleFrom Oracle8iApplication
-
7/29/2019 19 Concurrency Control
51/56
Dr. Philip Cannata Data Management 51
Concurrency Control in Oracle Developers Guide -Fundamentals
READCOMMITTED isolation can provide considerably more concurrency with a somewhat
increased risk of inconsistent results (due to phantoms and non-repeatable reads) for sometransactions. The SERIALIZABLE isolation level provides somewhat more consistency by
protecting against phantoms and non-repeatable reads, and may be important where a read/write
transaction executes a query more than once. However, SERIALIZABLE mode requires
applications to check for the "can't serialize access" error, and can significantly reduce throughput
in an environment with many concurrent transactions accessing the same data for update.
Application logic that checks database consistency must take into account the fact reads don'tblock writes in either mode.
Concurrency Control in OracleFrom Oracle8iApplication
-
7/29/2019 19 Concurrency Control
52/56
Dr. Philip Cannata Data Management 52
Concurrency Control in Oracle Developers Guide -Fundamentals
Application Tips
When a transaction runs in serializable mode, any attempt to change data that was changed byanother transaction since the beginning of the serializable transaction results in the following
error:
ORA-08177: Can't serialize access for this transaction. When you get an ORA-08177
error, the appropriate action is to roll back the current transaction, and re-execute it. After a
rollback, the transaction acquires a new transaction snapshot, and the DML operation is likely tosucceed.
Because a rollback and repeat of the transaction is required, it is good development practice to
put DML statements that might conflict with other concurrent transactions towards the beginning
of your transaction, whenever possible.
Rollback Demo
-
7/29/2019 19 Concurrency Control
53/56
Dr. Philip Cannata Data Management 53
Rollback DemoUser2-Rollback.sql
set serverout onbegincommit ;set transaction isolation level serializable ;update emp set sal = sal + 1
where empno = 7839 ;commit ;dbms_output.put_line('*** Commit done.') ;exceptionwhen others
then rollback ;dbms_output.put_line('*** Rollback done.') ;
end ;/
User1-Rollback.sqlcommit ;set transaction isolation level
serializable ;select empno, ename, sal from emp
where empno = 7839;update emp set sal = sal + 10
where empno = 7839 ;pause "Press Enter to continue" ;select empno, ename, sal from emp
where empno = 7839;
commit ;
Rollback Demo User 2 Rollback
-
7/29/2019 19 Concurrency Control
54/56
Dr. Philip Cannata Data Management 54
Rollback Demo User 2 Rollback
Step 1
to here Step 2
to here
Step 3to here
Rollback Demo User 2 By Itself
-
7/29/2019 19 Concurrency Control
55/56
Dr. Philip Cannata Data Management 55
Rollback Demo User 2 By Itself
Concurrency Control
-
7/29/2019 19 Concurrency Control
56/56
D Phili C t D t M t 56
Concurrency Control
Write a couple oracle concurrency control demos of your own
where you show insert and delete phantoms.