PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Buka Command Window –Administrator, ketik db2start db2 force applications all db2 connect to sample5 db2 create table tabel020(kolom1 integer) db2 insert into tabel020(select 20 from syscat.tables fetch first 9 rows only) db2 select * from tabel020 db2 terminate PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Cursor Stability without Currently Committed Buka 2 Command Window – Administrator (Aplikasi A dan Aplikasi B) Cek kondisi Currently Committed Aplikasi A : db2 get db cfg for sample5 Disable Currently Commited Aplikasi A : db2 update db cfg for sample5 using cur_commit disabled Mematikan auto-commit Aplikasi A : db2 +c list command options PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Lihat isi tabel020, kemudian update isi tabelnya select * tabel020 update tabel020 set kolom1=25 Aplikasi B : db2 connect to sample5 db2 select * from tabel020 Transaksi pada Aplikasi B pending, karena table di lock oleh Aplikasi A. PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Aplikasi A : commit Aplikasi B : Setelah transaksi Aplikasi A di commit, transaksi pada Aplikasi B dilanjutkan. With Currently Committed Disable Currently Commited Aplikasi A : update db cfg for sample5 using cur_commit on Aplikasi A : connect reset connect to sample5 update tabel020 set kolom1=30 PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Aplikasi B : db2 connect reset db2 connect to sample5 db2 select * from tabel020 Meskipun transaksi pada Aplikasi A belum di commit, tapi transaksi pada Aplikasi B tetap dilanjutkan dengan menggunakan data terakhir Aplikasi A : commit Aplikasi B : db2 select * from tabel020 Nilai yang muncul adalah nilai baru yang sudah di commit pada Aplikasi A. PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI Mengakhiri koneksi pada Aplikasi A dan Aplikasi B Aplikasi A dan Aplikasi B : db2 disconnect sample5 db2 terminate Repeatable Read Mengubah isolation ke RR (Repeatable Read) Aplikasi A : db2 +c change isolation to RR : : PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Connect ke database kemudian lihat isi tabel020 Aplikasi A : connect to sample5 select * from tabel020 Pada Aplikasi B, connect ke database kemudian lakukan proses insert data Aplikasi B : db2 connect to sample5 insert into tabel020 values(40) Transaksi pada Aplikasi B pending karena di lock oleh Aplikasi A. Aplikasi A : commit Aplikasi A melakukan commit untuk melepaskan lock PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Aplikasi B : Transaksi pada Aplikasi B dilanjutkan kembali dan berhasil melakukan insert data Mengakhiri koneksi pada Aplikasi A dan Aplikasi B Aplikasi A dan Aplikasi B : db2 disconnect sample5 db2 terminate Phantom Read : Read Stability Mengubah isolation ke RS (Read Stability) kemudian connect ke database Aplikasi A : db2 +c change isolation to RS PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Connect Aplikasi A ke database kemudian lihat isi tabel020 Aplikasi A : connect to sample5 select * from tabel020 Connect Aplikasi B ke database kemudian insert data ke tabel020 Aplikasi B : db2 connect to sample5 db2 insert into tabel020 values(40) Proses insert data berhasil walaupun Aplikasi A belum di commit PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Lihat isi tabel020 melalui Aplikasi A Aplikasi A : select * from tabel020 Data dari Aplikasi B sudah masuk, jumlah data menjadi 11 dari sebelumnya hanya 10. Mengakhiri koneksi pada Aplikasi A dan Aplikasi B Aplikasi A dan Aplikasi B : db2 disconnect sample5 db2 terminate Skenario 5: Uncommited Read Connect Aplikasi A ke database Aplikasi A : db2 +c connect to sample5 PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Mengubah isolation ke UR (Uncommited Read) kemudian connect ke database Aplikasi B : db2 change isolation to UR db2 connect to sample5 Lihat isi tabel020 melalui Aplikasi B Aplikasi B : db2 select * from tabel020 Transaksi pada Aplikasi b langsung bisa dijalankan tanpa harus menunggu Aplikasi A di commit, dan data yang ditampilkan juga berasal dari Aplikasi A yang belum di commit. Mengakhiri koneksi pada Aplikasi A dan Aplikasi B Aplikasi A dan Aplikasi B : db2 disconnect sample5 db2 terminate PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Deadlock Buka Command Window – Administrator Ubah konfigurasi cur_commit menjadi disabled db2 +c update db cfg for sample5 using cur_commit disabled Connect ke database kemudian buat 2 buah tabel kemudian insert data ke tabel tersebut connect to sample5 create table tabel1(no integer, nama varchar(100)) insert into tabel1 values(1,‘joko’),(2,‘jono’) create table tabel2(no integer, nama varchar(100)) insert into tabel1 values(1,‘rani’),(2,‘rina’) commit PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Lihat isi kedua tabel select * from tabel1 select * from tabel2 Buka 2 Command Window – Administrator (Aplikasi A dan Aplikasi B) Aplikasi A dan Aplikasi B : db2 +c change isolation to CS PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Connect ke database Aplikasi A dan Aplikasi B : connect to sample5 Lakukan update data pada tabel1 menggunakan Aplikasi A Aplikasi A : update tabel1 set nama=’joni’ where no=2 Lakukan update data pada tabel2 menggunakan Aplikasi B Aplikasi B : update tabel2 set nama=’rini’ where no=2 Lihat isi tabel2 menggunakan Aplikasi A Aplikasi A : select * from tabel2 Transaksi pada Aplikasi A pending karena tabel2 masih di lock oleh Aplikasi B. Lihat isi tabel1 menggunakan Aplikasi B Aplikasi B : select * from tabel1 Transaksi pada Aplikasi B juga pending karena tabel1 juga masih di lock oleh Aplikasi A. Kondisi saling menunggu seperti ini yang mengakibatkan terjadinya deadlock. PRAKTIKUM SISTEM BASIS DATA BAB NAMA NIM ASISTEN : DATA CONCURRENCY AND LOCKING : DIMAS HAMDHAN P. TGL PRAKTIKUM : 125150400111020 TGL PENGUMPULAN : KEMAL WIBISONO USFITA KIFTIYANI : : Setelah beberapa detik, algoritma deadlock pada DB2 akan memutuskan aplikasi mana yang akan dilanjutkan dan aplikasi mana yang akan di rollback Aplikasi A dilanjutkan Aplikasi B di rollback