Anda di halaman 1dari 21

Sistem Manajemen Basis Data

Teknik Konkurensi

Lintang Yuniar Banowosari


http://staffsite.gunadarma.ac.id/lintang
Pengontrolan Konkurensi
 Pengontrolan konkurensi merupakan salah satu
fungsi dari DBMS
 Pada DBMS terpusat yang multi-user, dapat
mengakses sejumlah transaksi pada waktu
bersamaan.
 Transaction (transaksi) adalah suatu aksi atau
serangkaian aksi yang dilakukan oleh seorang
pemakai atau suatu program aplikasi, dimana dapat
mengakses atau mengubah isi dari database.
 Dua hasil transaksi adalah commit atau rollback.
 Jika transaksi berjalan sukses maka dikatakan
commit, sebaliknya jika transaksi tidak berjalan
sukses maka transaksi ibatalkan dan kembali ke
keadaan semula dikatakan rollback.
Pengontrolan Konkurensi
Untuk menjamin transaksi-transaksi yang
dilakukan bersamaan berjalan sukses
tanpa adanya tumpang tindih maka
dibutuhkan mekanisme pengontrolan
konkurensi, jika tidak timbul
permasalahan:
 Lost update
 Uncommited dependency
 Inconsistent analysis
Permasalahan Konkurensi

 Lost update/kehilangan modifikasi.

Permasalahan timbul pada saat operasi


update berjalan sukses kemudian ditindih
oleh operasi update lain yang dilakukan
oleh pemakai lain.
Permasalahan Konkurensi

Lost update/kehilangan modifikasi.

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

Lost update/kehilangan modifikasi.


Permasalahan Konkurensi
Uncommited dependency / ketergantungan
pada saat belum commit

Permasalahan timbul pada saat transaksi dibiarkan


melihat hasil dari transasksi lain yang belum
commit.

Masalah ini timbul jika transaksi membaca suatu


record yang sudah dimodifikasi oleh transaksi lain
tetapi belum terselesaikan (uncommited), terdapat
kemungkinan kalau transaksi tersebut dibatalkan
(rollback).
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

 Inconsistent analysis / analisis yang


tidak konsisten

Permasalahan timbul apabila suatu


transaksi membaca beberapa nilai tetapi
transasksi berikutnya memodifikasi salah
satu nilai.
Permasalahan Konkurensi
Inconsistent analysis

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).

 Rollback adalah operasi yang


menyatakan bahwa suatu transaksi
dibatalkan (unsuccessfull end-of-
transaction).
TEHNIK PENGONTROLAN KONKURENSI

 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.

Fungsi kunci (lock) adalah menjaga record


tersebut agar tidak dimodifiksi transaksi lain.
Matrik Locking
Cara kerja dari kunci :
 Kita asumsikan terdapat 2 (dua) macam kunci :
 Kunci X (kunci eksklusif) dan kunci S (kunci yang
digunakan bersama-sama)
 Jika transaksi A menggunakan kunci X pada record R,
maka permintaan dari transaksi B harus menunggu
sampai nanti transaksi A melepaskan kunci
 Jika transaksi A menggunakan kunci S pada record R,
Maka :
 Bila transaksi B ingin menggunakan kunci X, maka B
harus menunggu sampai A melepaskan kunci
tersebut.
 Bila transaksi B ingin menggunakan kuni S, maka B
bisa menggunakan kunci S bersama A
Matrik Locking
 Bila suatu transaksi hanya melakukan pembacaan
saja, secara otomatis ia memerlukan kunci S.
Bila transaksi tersebut ingin memodifikasi record, maka
secara otomatis ia memerlukan kunci X.
Bila transaksi tersebut sudah menggunakan kunci S,
setelah itu ia akan memodifikasi record, maka kunci S
akan dinaikkan ke level kunci X.

 Kunci X dan kunci S akan dilepaskan pada saat


Synchpoint (synchronization point).
Bila synchpoint ditetapkan maka:
 semua modifikasi program menjalankan
operasi COMMIT atau ROLLBACK
 semua kunci dari record dilepaskan
Matrik Locking
Transaksi A

X S -
X N N Y
Transaksi B
S N Y Y
- Y Y Y
PENYELESAIAN MASALAH
DENGAN LOCKING
 Penyelesaian masalah lost update

Penyelesaian masalah lost update dengan locking menimbulkan


deadlock dimana kedua transaksi sama-sama menunggu.

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

Penyelesaian masalah dengan locking juga menimbulkan masalah


deadlock.

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

Anda mungkin juga menyukai