Concurrency Control
Concurrency Control
Tujuan
1
Masalah Konkurensi
Commit
Suatu operasi yang memberikan informasi ke sistem bahwa
transaksi sudah selesai, maka semua modifikasi yang dibuat oleh
transaksi tersebut sudah dilaksanakan secara penuh.
Rollback
Suatu operasi yang memberikan informasi ke sistem bahwa
ada sesuatu yang tidak diinginkan terjadi (kegagalan) yang
menyebabkan modifikasi dibatalkan.
2
Masalah modifikasi yang hilang
Contoh :
Gambar 1
3
Masalah Modifikasi sementara
Pada saat memodifikasi suatu data juga sering terjadi
kegagalan yang mengakibatkan transaksi harus di rollback.
Contoh :
Gambar 2.
4
Contoh ke dua:
Gambar 3.
5
Masalah analisis yang tidak konsisten
Pada suatu pengupdate-an nilai yang dihasilkan tidak sesuai
dangan nilai yang diharapkan.
Contoh :
6
Nilai 1 = 40 ; Nilai 2 = 50 ; Nilai 3 = 30
Transaksi A Waktu Transaksi B
Baca Nilai 1 t1 -
Jumlah = 40
Baca Nilai 2 t2 -
Jumlah = 90
- t3 Baca Nilai 3
- t4 Modifikasi Nilai 3
30 -> 20
- t5 Baca Nilai 1
- t6 Modifikasi Nilai 1
40 -> 50
- t7 COMMIT
Baca Nilai 3 t8
Jumlah = 110
seharusnya 120
Gambar 4.
7
Teknik Penguncian (Locking)
Teknik Penguncian adalah salah satu teknik pengontrol
konkurensi.
Latar belakang dari teknik penguncian adalah ketika suatu
transaksi memerlukan jaminan kalau record yang diingini tidak
akan berubah secara mendadak, maka diperlukan penguncian
untuk record tersebut.
8
X S -
X N N Y
S N Y Y
- Y Y Y
9
Penguncian pada Masalah Modifikasi yang hilang
Transaksi B juga harus menunggu pada t4. Maka tidak akan ada
yang kehilangan modifikasi, tetapi terdapat masalah baru yaitu
Deadlock (Gambar 5).
Baca R t1 -
(kunci S)
- t2 Baca R
(kunci S)
Modifikasi R t3 -
(kunci X)
tunggu
tunggu t4 Modifikasi R
tunggu (kunci X)
tunggu tunggu
Gambar 5
10
Penguncian pada masalah Modifikasi sementara
- t1 Modifikasi R
(kunci X)
Baca R t2 -
(kunci S)
tunggu t3 ROLLBACK
tunggu Synchpoint
tunggu (kunci X dilepas)
Baca R kembali t4
(kunci S)
Gambar 6
11
Transaksi A Waktu Transaksi B
- t1 Modifikasi R
(kunci X)
Modifikasi R t2 -
(kunci X)
tunggu t3 ROLLBACK
tunggu Synchpoint
tunggu (kunci X dilepas)
Modifikasi R kembali t4
(kunci X)
Gambar 7.
Deadlock
12
Kita dapat melihat bahwa metode pemguncian dapat
mengatasi masalah-masalah konkurensi. Tetapi sayangnya,
dengan menggunakan penguncian akan timbul masalah baru yaitu
masalah deadlock.
13
Nilai 1 = 40 ; Nilai 2 = 50 ; Nilai 3 = 30
Transaksi A Waktu Transaksi B
Baca Nilai 1 t1 -
(kunci S)
Jumlah = 40
Baca Nilai 2 t2 -
(kunci S)
Jumlah = 90
- t3 Baca Nilai 3
(kunci S)
- t4 Modifikasi Nilai 3
(kunci X)
30 -> 20
- t5 Baca Nilai 1
(kunci S)
- t6 Modifikasi Nilai 1
(kunci X)
tunggu
- t7 tunggu
tunggu
- tunggu
Baca Nilai 3 t8 tunggu
tunggu tunggu
tunggu tunggu
Gambar 8
14
Two-Phase Locking
1. Growing Phase
Pada saat transaksi memerlukan kunci, tetapi tidak dapat
melepaskannya
2. Shrinking Phase
Pada saat transaksi melepaskan kunci, tetapi tidak dapat
memperolehnya
Aturan 2PL
Suatu transaksi harus meminta suatu kunci untuk suatu record
sebelum mengolah record tsb.
Jenis kunci dapat
Write_lock : kunci yang dapat digunakan baik untuk
menulis atau membaca suatu record
Read_lock : kunci yang dapat digunakan untuk
membaca suatu record
Pada saat transaksi melepaskan suatu kunci, ia tidak akan
memerlukan kunci yang baru
15
Masalah Modifikasi Yang Hilang
TA Waktu TB Nilai
t1 Read (x) 100
Read (x) t2 X = x + 100 100
X = x – 10 t3 Write (x) 200
Write (x) t4 commit 90
Commit t5
Gambar 9
TA Waktu TB Nilai
t1 100
t2 read (x) 100
t3 x= x+ 100 200
read (x) t4 write (x) 200
X = x – 10 t5 rollback 100
Write (x) t6 190
Commit 190
Gambar 10
16
Masalah Analisis Yang Tidak konsisten
Gambar 11
17
Pencegahan Masalah Modifikasi Yang Hilang (2PL)
TA Waktu TB Nilai
t1 Write_lock (x)
Write_lock (x) t2 read (x) 100
WAIT t3 x= x+ 100 100
WAIT t4 Write (x) 200
WAIT t5 Unlock (x) 200
WAIT t6 commit 200
read (x) t7 200
x= x-10 t8 200
Write (x) t9 190
Unlock (x) t10 190
commit t11 190
Gambar 12
18
Pencegahan Masalah Modifikasi Sementara (2PL)
TA Waktu TB Nilai
Gambar 13
19
Pencegahan Masalah Analisis Yang Tidak konsisten (2PL)
20
t19 Sum = sum 90 50 35 175
+z
t20 Unlock (x, y, 90 50 35 175
z)
t21 commit 90 50 35 175
Gambar 14
Cascading Rollback
Waktu TA TB TC
t1 write_lock (x)
t2 read (x)
t3 read_lock (y)
t4 X=y+x
t5 Write (x)
t6 Unlock (x)
t7 : write_lock (x)
t8 : read (x)
t9 : X = x +100
t10 : write (x)
t11 : unlock (x)
t12 : :
t13 rollback :
t14 rollback
t15 read_lock (y)
t16 :
t17 rollback
Gambar 15
21
Deadlock
Waktu TA TB
t1 write_lock(x)
t2 read (x) write_lock (y)
t3 x = x -1 read (y)
t4 Write (x) y = y +100
t5 Write_lock (y) Write (y)
t6 WAIT Write_lock(x)
t7 WAIT WAIT
t8 WAIT WAIT
t9 WAIT
Gambar 16
22