Sistem Manajemen Basis Data
(Teknik Konkurensi)
Materi
Konsep Transaksi
Status transaksi
Penerapan Atomisitas dan Durabilitas
Eksekusi konkuren
Serializability
Recoverability
Penerapan Isolasi
Konsep Transaksi
Sebuah
transaksi
adalah
sebuah
unit
dari eksekusi
program yang mampu
mengakses dan mengupdate
berbagai data.
Sebuah transaksi akan
Konsep Transaksi
Selama eksekusi transaksi
database mungkin dalam
kondisi inkonsisten.
Setelah transaksi selesai,
Properti AKID
Atomik
Dimana semua operasi-operasi dalam transaksi dapat bekerja secara utuh atau tidak sama sekali.
Konsisten
Eksekusi transaksi dapat menjamin konsistensi database.
Isolasi/Independent
Pada sejumlah transaksi yang terjadi secara
bersamaan, setiap transaksi tidak boleh terpengaruh dengan transaksi yang lain. Hasil transaksi sementara harus terlindung dari eksekusi transaksi yang lain.
Properti AKID
Maksudnya, untuk setiap pasangan
transaksi
T
idan
T
j,
menunjukkan kepada
T
ibahwa transaksi lain
T
jmenyelesaikan
eksekusi sebelum
T
imulai, atau
T
jmulai
eksekusi setelah
T
iselesai.
Durabel (bertahan/permanen)
.
Setelah sebuah transaksi berakhir
dengan sukses, perubahan yang terjadi
pada sebuah database harus tetap
Contoh pada transfer uang
Transaksi pengiriman 50 dari rekening
A
ke
rekening
B
:
1. read(A)
2. A := A – 50 3. write(A) 4. read(B)
5. B := B + 50 6. write(B)
Konsistensi yang dibutuhkan – jumlah A dan
Contoh pada transfer uang
Keatomikan yang diperlukan — jika
transaksi terhenti setelah tahap ke 3
sebelum tahap ke 6, sistem harus
menjamin bahwa perubahan pada
database tidak terjadi samasekali,
sebab jika tidak maka ketidak
Kebutuhan akan daya tahan — seorang user dapat
menyelesaikan sebuah transaksi secara lengkap (mis., transfer 50 telah diterima), perubahan nilai pada database harus tetap bertahan, bahkan jika kemudian terjadi crash.
Kebutuhan akan keterisolasian — jika diantara
langkah ke 3 dan 6, ada transaksi lain mengakses database yang akan diubah, maka akan terjadi
ketidak konsistenan data (jumlah A + B akan lebih sedikit dari yang seharusnya).
Contoh pada transfer uang
Dapat dijamin bila transaksi akan terjadi
secara
serial
,
dimana yang satu
berjalan setelah yang lainnya.
Bagaimanapun juga eksekusi transaksi
secara bersamaan tetap lebih
Status Transaksi
Aktif,
adalah status awal; sebuah
transksi akan ada dalam status ini
selama eksekusi berlangsung
Selesai sebagian,
keadaan yang
dicapai transaksi tepat setelah
instruksi terakhir dalam transksi
selesai dikerjakan.
Gagal,
kedaan dimana eksekusi
Status Transaksi
Batal,
setelah transaksi batal terjadi
dan database dikembalikan
nilai-nilainya seperti sebelum transaksi.
Dua pilihan setelah pembatalan:
Memulai kembali transaksi – hanya
jika tidak ada kesalahan lojik
Hentikan transaksi
Eksekusi Konkuren
Banyak transaksi dapat dijalankan secara bersamaan dalam
sebuah sistem. Keuntungannya:
Meningkatkan kinerja prosesor dan disk
penyimpanan, untuk melakukan transaksi yang lebih
baik: suatu transaksi dapat menggunakan CPU sementara yang lain membaca atau menulis dalam penyimpan
Mengurangi rata-rata waktu tunggu transaksi:
transaksi yang singkat tidak perlu menunggu transaksi lain yang lebih panjang.
Skema pengendalian konkurensi – mekanisme untuk
15
DEF. PENGONTROLAN
KONKURENSI
Proses pengelolaan operasi pada
basis data secara simultan tanpa
saling berinterferensi satu sama lain
Pengaksesan konkuren yg hanya
membaca data, tidak akan saling
ber-interferensi, tetapi apabila ada yg
16
1. Lost update (modifkasi yg hilang)
Masalah operasi update yg sukses dari seorang pengguna kemudian ditimpali oleh operasi update dari pengguna lain
2. Uncommited dependency (ketergantungan yg tidak
sukses/modifkasi sementara)
Masalah terjadi saat suatu transaksi membaca data dari transaksi lain yg belum dicommit
3. Inconsistent analysis
Masalah terjadi saat satu transaksi membaca beberapa nilai tetapi transaksi kedua pd waktu sama memodifkasi nilai tersebut.
Tiga masalah konkurensi
Lost update
Transaksi A retrieve nilai t saat w1. Transaksi B retrieve nilai
t saat w2. Transaksi B mengubah nilai satu atau lebih record tanpa melihat efek transaksi A. Transaksi B overwrite nilai-nilai hasil transaksi A sehingga adalah mungkin transaksi A tidak melihat efek perubahan yang dilakukan B
Transaksi A
Transaksi A WaktuWaktu Transaksi BTransaksi B Select * from t;
Select * from t; w1w1 w2
w2 Select * from t;Select * from t; *update t set
*update t set
id=1
id=1
Where id = 2;
Where id = 2;
w3
w3
w4
w4 Update t set id Update t set id = 3 where id =
= 3 where id =
2;
2;
Uncommitted dependency
Masalah muncul jika transaksi diijinkan retrieve record-record yang telah diubah nilainya oleh transaksi lain yang belum save. Karena belum save selalu ada
kemungkinan perubahan tersebut akan di-undo (redo)
Transaksi A
Transaksi A waktuwaktu Transaksi BTransaksi B w1
w1 Update t set dept_id=1;Update t set dept_id=1; Select * from t;
Select * from t; w2w2 w3
w3 rollback;rollback;
Transaksi A dependent ke uncommitted change saat w2
Transaksi A
Transaksi A waktuwaktu Transaksi BTransaksi B w1
w1 Update t set dept_id=1;Update t set dept_id=1; Update t set
Update t set
dept_id=11;
dept_id=11; w2w2
w3
w3 rollback;rollback;
A mengubah uncommitted change saat
w2, kehilangan saat w3,
20
•
Masalah Analisis yang tidak Konsisten
Penjadwalan
Penjadwalan
– urutan yang menunjukkan
kronologi transaksi yang mana dalam
transaksi konkuren di eksekusi
Sebuah jadwal untuk sekelompok
transaksi harus patuh pada semua
instruksi dari transaksi-transaksi tersebut
Harus menjaga urutan instruksi yang
22
OBJEKTIF PENGONTROLAN
KONKURENSI
Penjadualan transaksi untuk
mencegah adanya saling interferensi.
Hanya satu transaksi dieksekusi pada
satu waktu : satu transaksi di-
commit
sebelum transaksi lain diperkenankan
untuk mulai.
Transaksi dapat dilakukan pada
Contoh Penjadwalan
Transaksi T
1transfer 50
dari
A ke
B
, dan
transaksi
T
2transfer
10% dari saldo rekening
Transaksi
T
1dan
T
2dijalankan secara
berselang seling
.
Penjadwalan
berikut bukan
penjadwalan serial,
tetapi
equivalent
dengan Jadwal 1.
Baik di Skedul 1 dan 2 jumlah dari A dan B benar.
Berikut adalah
penjadwalan secara
konkuren yang tidak
menghasilkan jumlah
A dan B dengan
benar.
26
SERIALIZABILITY
Schedule atau jadual merupakan urutan dari operasi
read & write secara bersamaan pada sekumpulan transaksi yg konkuren.
Serial schedule merupakan jadual dimana operasi2
setiap transaksi dieksekusi secara berurutan tanpa terselip operasi dari transaksi lain
Nonserial schedule merupakan jadual dimana
operasi2 dari sekumpulan transaksi konkuren dapat saling menyelip.
Serializable berarti jika jadual (nonserial)
27
SERIALIZABILITY (lanj.)
Urutan operasi sangat penting
Jika 2 transaksi hanya melakukan operasi
read data, maka tidak terjadi konfik & urutan
operasi tidak penting
Jika 2 transaksi melakukan operasi read &
write pada data yg berbeda, maka tidak
terjadi konfik & urutan operasi tidak penting
Jika satu transaksi melakukan operasi write
28
METODE UNTUK MENJAMIN
SERIALIZABILITY
1. LOCKING
2. TIMESTAMPING
Keduanya konservatif (pesimistik) karena
transaksi ditunda untuk mencegah konfik dg
transaksi lain di waktu kemudian.
3. METODE OPTIMISTIC
29
METODE LOCKING
Prosedur untuk mengontrol
pengaksesan data secara konkuren.
Apabila satu transaksi mengakses
basis data, suatu lock (kunci) akan
menolak pengaksesan transaksi lain
utk mencegah modifkasi yg tidak
30
Dua Lock/KUNCI
1. Kunci READ / S (digunakan bersama)
Jika transaksi mempunyai kunci read terhadap suatu data, maka dia dapat melakukan operasi
read tetapi tidak dapat melakukan operasi update terhadap data tsb.
2. Kunci WRITE / X (eksklusif)
31
ATURAN LOCKING
Transaksi yg akan mengakses suatu
data harus terlebih dahulu menguncinya,
meminta kunci S jika hanya melakukan
read data saja atau kunci X jika untuk
melakukan operasi read & write.
Jika data tsb belum dikunci oleh
32
ATURAN LOCKING (lanj.)
Jika data tsb telah dikunci, maka DBMS
menentukan apakah kunci yg diminta
sesuai dg yg ada. Jika kunci read yg
diminta sama dengan kunci read yg telah
ada, maka permintaan diperkenankan,
selain itu maka transaksi harus menunggu
(wait) sampai kunci write dilepaskan.
Transaksi terus menahan suatu kunci
33
34
PROTOKOL TWO-PHASE
LOCKING (2PL)
Protokol untuk menjamin
serializability
Suatu transaksi mengikuti protokol
35
Phase 1: Growing Phase
Transaksi dapat memperoleh kunci
Transaksi tidak boleh melepaskan kunci
Phase 2: Shrinking Phase
Transaksi boleh melepaskan kunci
Transaksi tidak dapat memperoleh kunci
36
37
38
39
DEADLOCK
Suatu situasi dimana dua atau lebih transaksi
masing2 menunggu (wait) suatu kunci yg
ditahan oleh transaksi lain, untuk dilepaskan.
2 teknik menangani deadlock
1.
Deadlock prevention
, DBMS mengamati
transaksi apakah menimbulkan deadlock
& tidak akan membiarkan deadlock terjadi
2.
Deadlock prevention and recovery
, DBMS
membiarkan terjadi deadlock,
40
41
METODE TIMESTAMPING
Timestamp, merupakan suatu identifkasi unik
yang dibuat DBMS untuk mengindikasikan
waktu mulai relatif dari suatu transaksi.
Dengan waktu sistem atau penambahan pada
kounter logik setiap waktu transaksi mulai.
Suatu protokol yg menyusun transaksi2
42
METODE OPTIMISTIC
Berbasis pada asumsi bahwa pada
lingkungan tertentu, jarang terjadi
konfik, sehingga lebih efsien
membiarkan transaksi dieksekusi.
Kemudian pada saat akan di-commit,
diidentifkasi apakah akan timbul
Tugas
Buatlah tulisan mengenai fasilitas locking dan
recovery pada
salah satu
software DBMS