Sistem Manajemen Basis Data (Teknik Konkurensi)
Sistem Manajemen Basis Data (Teknik Konkurensi)
Dr. Lily Wulandari
Materi
Serializability
Defnisi transaksi dalam SQL
Penerapan Isolasi
Recoverability
Konsep Transaksi
Eksekusi konkuren
Penerapan Atomisitas dan Durabilitas
Status transaksi
Konsep Transaksi
Sebuah transaksi adalah
sebuah unit dari eksekusi program yang mampu mengakses dan mengupdate berbagai data. Sebuah transaksi akan berhadapan dengan konsistensi database. Konsep Transaksi
Selama eksekusi transaksi
database mungkin dalam
kondisi inkonsisten.
Setelah transaksi selesai,
database harus kembali konsisten.Properti AKID
Untuk menjamin integritas data, sistem database harus bersifat :
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 dan T , menunjukkan kepada T i j i bahwa transaksi lain T menyelesaikan j
eksekusi sebelum T mulai, atau T mulai
i j eksekusi setelah T selesai. i Durabel (bertahan/permanen) .Setelah sebuah transaksi berakhir dengan sukses, perubahan yang terjadi pada sebuah database harus tetap bertahan. 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 B tidak terubah oleh eksekusi transaksi.
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 konsistenan akan terjadi.
Contoh pada transfer uang
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 menguntungkan. 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 belum dapat dikerjakan secara utuh (terhenti).
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
Berhasil (Committed), keadaan setelah transaksi berjalan lengkap. Status 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
mendapatkan isolasi, mis., untuk mengendalikan interaksi antara transaksi konkuren dalam hubungannya menjaga konsistensi database 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 mengupdate data, akan saling berinterferensi & menyebabkan terjadi ketidakkonsistenan. Tiga masalah konkurensi
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 Waktu Transaksi B
Transaksi A Waktu Transaksi B
Select * from t; w1
Select * from t; w1
w2 Select * from t;
w2 Select * from t;
- update t se
- update t set w3
id=1
id=1
Where id = 2;
Where id = 2;
w4 Update t set id
w4 Update t set id
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
waktu
waktu
Transaksi B Transaksi B w1 w1 Update t set dept_id=1; Update t set dept_id=1; Select * from t; Select * from t; w2 w2 w3 w3 rollback; rollback; Transaksi A dependent ke uncommitted change saat w2
Tiga masalah konkurensi
Tiga masalah konkurensi Transaksi A Transaksi A waktu waktu Transaksi B Transaksi B w1 Update t set dept_id=1; w1 Update t set dept_id=1;
Update t set w2 Update t set w2 dept_id=11; dept_id=11; w3 w3 rollback; rollback;
A mengubah uncommitted change saat w2, kehilangan saat w3, Tiga masalah konkurensi
- Masalah Analisis yang tidak Konsisten
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 mana yang ditampilkan pada transaksi tunggal. 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 sistem paralel, dengan cara penjadualan bersama.
Contoh Penjadwalan
Transaksi T transfer 50 1
dari A ke B, dan transaksi T transfer 2 10% dari saldo rekening
A ke rekening B. Berikut
adalah jadwalnya secara serial, dimana T diikuti 1 oleh T . 2 Contoh Penjadwalan
Transaksi T dan T
1
2 dijalankan 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.
Contoh Penjadwalan
Berikut adalah penjadwalan secara konkuren yang tidak menghasilkan jumlah A dan B dengan benar. 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)
menghasilkan hasil yg sama seperti halnya jadual
serial lainnyaSERIALIZABILITY (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 data & yg lain melakukan operasi read & write pada data yg sama, maka urutan eksekusi sangat penting
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 Berasumsi bhw konfik jarang terjadi sehingga proses tetap berjalan & pengecekan dilakukan pada saat transaksi sudah di-commit
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 benar 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) Jika transaksi mempunyai kunci write terhadap suatu data, maka dia dapat melakukan operasi read maupun operasi update terhadap data tsb.
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 transaksi apapun, maka kunci diperkenankan. 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 sampai dilepaskan secara eksplisit selama eksekusi atau telah selesai. Matriks LOCKING
PROTOKOL TWO-PHASE LOCKING (2PL)
Protokol untuk menjamin serializability
Suatu transaksi mengikuti protokol
Two-phase locking jika semua
operasi penguncian mendahului operasi membuka kunci terlebih dahulu dalam suatu transaksi . PROTOKOL TWO-PHASE LOCKING (2PL)
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
2PL UNTUK MASALAH KEHILANGAN MODIFIKASI
2PL UNTUK MASALAH MODIFIKASI
SEMENTARA
2PL UNTUK MASALAH ANALISIS YANG TIDAK KONSISTEN 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, mengenalinya lalu menanganinya.
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 secara global, dimana transaksi yg tertua, transaksi dg timestamp terkecil, mendapat prioritas utama dari konfik transaksi tsb.
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 konfik, jika ya maka transaksi harus di rollback atau di proses ulang.Tugas
Buatlah tulisan mengenai fasilitas locking dan recovery pada salah satu software DBMS (Oracle, SQL Server 2000 ...., DB2 dll)