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

  

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 lainnya

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