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 begin_transaction read(x) x=x-10 write(x) commit Waktu t1 t2 t3 t4 t5 t6 T2 begin_transaction read(x) x=x+100 write(x) commit

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
begin_transaction read(x) x=x-10 write(x) commit

Waktu
t1 t2 t3 t4 t5 t6 t7 t8

T2
begin_transaction

read(x) x=x+100 write(x) rollback

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 begin_transaction read(x) x=x-10 write(x) read(z) z=z+10 write(z) commit

Waktu t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11

T2 begin_transaction sum=0 read(x) sum=sum+x read(y) sum=sum+y read(z) sum=sum+z commit

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). adalah operasi yang menyatakan bahwa suatu transaksi dibatalkan (unsuccessfull end-oftransaction).

Rollback

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 X S N N Y

S N Y Y

Y Y Y
Transaksi B

PENYELESAIAN MASALAH DENGAN LOCKING

Penyelesaian masalah lost update

Penyelesaian masalah lost update dengan locking menimbulkan deadlock dimana kedua transaksi sama-sama menunggu.

T1 begin_transaction read(x) .. kunci S x=x-10 WAIT

Waktu t1 t2 t3 t4 t5

T2 begin_transaction read(x) .. kunci S x=x+100 WAIT WAIT

PENYELESAIAN MASALAH DENGAN LOCKING

Penyelesaian masalah uncommited dependency


T1 begin_transaction read(x) WAIT read(x) .. kunci S x=x-10 .. kunci X write(x) commit waktu t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 T2 begin_transaction read(x) .. kunci S x=x+100 kunci X write(x) rollback

PENYELESAIAN MASALAH DENGAN LOCKING

Penyelesaian masalah inconsistent analysis

Penyelesaian masalah dengan locking juga menimbulkan masalah deadlock.

T1 begin_transaction read(x) .. kunci S x=x-10 WAIT

Waktu t1 t2 t3 t4 t5 t6

T2 begin_transaction sum=0 read(x) .. kunci S sum=sum+x WAIT WAIT

Anda mungkin juga menyukai