Teknik Konkurensi
T1 Waktu T2
begin_transaction t1 begin_transaction
read(x) t2 read(x)
x=x-10 t3 x=x+100
write(x) t4 write(x)
commit t5 commit
t6
Permasalahan Konkurensi
Uncommited dependency
T1 Waktu T2
begin_transaction t1 begin_transaction
read(x) t2 read(x)
x=x-10 t3 x=x+100
write(x) t4 write(x)
commit t5 rollback
t6
t7
t8
Permasalahan Konkurensi
Uncommited dependency
Permasalahan Konkurensi
T1 Waktu T2
begin_transaction t1 begin_transaction
read(x) t2 sum=0
x=x-10 t3 read(x)
write(x) t4 sum=sum+x
read(z) t5 read(y)
z=z+10 t6 sum=sum+y
write(z) t7 read(z)
commit t8 sum=sum+z
t9 commit
t10
t11
Permasalahan Konkurensi
Inconsistent analysis
Nilai 1 = 40
Nilai 2 = 50
Nilai 3 = 30
Transaksi A menjumlahkan
nilai 1, 2 dan 3
Transaksi B nilai 1 + 10 dan
nilai 3 - 10
Catatan
Commit adalah operasi yang
menyatakan bahwa suatu transaksi
sudah terselesaikan/ sukses
(successfull end-of-transaction).
Locking
Apabila suatu transaksi mengakses suatu data maka suatu
lock (kunci) dapat mencegah pengaksesan oleh transasksi
lain.
Timestamping
Timestamping merupakan suatu identitas waktu dimulainya
suatu transasksi.Timestamping mengatur prioritas transaksi
berdasarkan timestamp. Timestamp terkecil merupakan
transaksi paling duluan, jika terjadi konflik transaksi direstart.
Optimistic
Konflik jarang terjadi, semua transaksi dieksekusi dan pada
saat commit, dicek kembali, jika ada konflik transaksi direstart.
Matrik Locking
Konsep dasar :
Ketika suatu transaksi memerlukan jaminan
kalau record yang diingini tidak akan berubah
secara mendadak, maka diperlukan kunci untuk
record tersebut.
X S -
X N N Y
Transaksi B
S N Y Y
- Y Y Y
PENYELESAIAN MASALAH
DENGAN LOCKING
Penyelesaian masalah lost update
T1 Waktu T2
begin_transaction t1 begin_transaction
read(x) ….. kunci S t2 read(x) ….. kunci S
x=x-10 t3 x=x+100
WAIT t4 WAIT
t5 WAIT
PENYELESAIAN MASALAH
DENGAN LOCKING
Penyelesaian masalah uncommited dependency
T1 waktu T2
begin_transaction t1 begin_transaction
read(x) t2 read(x) ….. kunci S
WAIT t3 x=x+100 … kunci X
read(x) ….. kunci S t4 write(x)
x=x-10 ….. kunci X t5 rollback
write(x) t6
commit t7
t8
t9
t10
PENYELESAIAN MASALAH
DENGAN LOCKING
Penyelesaian masalah inconsistent analysis
T1 Waktu T2
begin_transaction t1 begin_transaction
read(x) ….. kunci S t2 sum=0
x=x-10 t3 read(x) ….. kunci S
WAIT t4 sum=sum+x
t5 WAIT
t6 WAIT