SlideShare a Scribd company logo
1 of 29
Download to read offline
LAPORAN SISTEM MANAJEMAN BASISDATA
KOMPARASI ROW DAN TABLE LOCKING ANTARA
ORACLE DENGAN MYSQL
DISUSUN OLEH :
Galih Nalendro (14523047)
Hilda Indriani Gea (14523231)
Desty Metik Mentarie (14523272)
Philo Mushofi El Haries (14523310)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS ISLAM INDONESIA
2017
PENGERTIAN LOCKING
 Lock pada database berarti suatu kunci atau penguncian. Lock digunakan pada saat terjadi
pengaksesan database oleh user secara bersamaan. Hal ini ditujukan untuk menjaga data agar
tidak corrupt/hilang atau data yang tidak valid pada saat banyak user mengakses database
secara bersamaan/konkuren.
Dalam laporan ini, penulis membandingkan konsep locking pada 2 DBMS yaitu
a. MySQL
b. ORACLE.
MySQL
Persiapan
Kami menggunakan perangkat lunak MySQL Workbench. Perangkat lunak ini
merupakan salah satu perangkat lunak yang memungkinkan pengguna untuk menjalankan 2
session yang mengakses basisdata yang sama. Ditambah lagi perangkat lunak ini memiliki GUI
yang sangat membantu untuk berbagai aktivitas manajemen basisdata, contohnya membuat
basisdata, table, skema dan sebaginya. Perangkat lunak ini dapat di unduh di
https://dev.mysql.com/downloads/workbench/
Setelah mengunduh MySQL Workbench, kemudian install dan buka perangkat lunak
tersebut. Pertama-tama pastikan anda telah meng-install XAMPP terlebih dahulu dan
menjalankan modul MySQL.
Kemudian kembali ke aplikasi Workbench, buatlah koneksi dengan cara klik lambing ‘+’ pada
MySQL Connection (terletak pada kiri atas layar)
Setelah itu akan muncul dialog-box setup untuk koneksi yang akan kita buat.
Isi bebas dialog-box tersebut pada connection name, karena nama koneksi wajib diisi
pada aplikasi ini. Kami membuat koneksi dengan nama “simbada_try1”. Text field yang lain
cukup dibiarkan saja sesuai default. Klik ‘Test Connection’ pada bawah kanan untuk mengecek
koneksi apakah berjalan atau tidak. Jika sudah muncul dialog-box baru seperti dibawah ini, maka
koneksi berjalan lancar.
Kemudian buka koneksi tersebut. Kemudian buat basisdata baru, dengan cara klik create
new scheme.
Maka akan muncul dialog-box untuk setup scheme seperti dibawah ini
Isi nama scheme dan klik Apply. Pada percobaan ini kami memberi nama “db_baru”.
Setelah selesai tambahkan table pada scheme yang baru saja dibuat. Caranya dengan klik panah
kekanan pada nama schema yang tertera pada kolom paling kiri kemudian klik kanan pada
“tables” kemudian pilih Create Table.
Setelah membuat table, kemudian membuat user baru untuk percobaan dengan 2 session.
Caranya klik users dan privileges pada kolom paling kiri. Kemudian akan muncul dialog-box
berikut.
Buat akun baru dengan klik Add Account, kemudian isi formnya. Kami menggunakan
login name “naruto” dengan password yang sama dengan login name. Setelah itu kembali ke
halaman home untuk membuat koneksi baru. Caranya sama dengan membuat koneksi pertama
kali dengan user ‘root’, namun sekarang ganti usernya dengan user yang baru kita buat dan isi
passwordnya. Kami menggunakan nama koneksi “koneksiNaruto”. Kini telah ada 2 koneksi
maka persiapan telah selesai.
1. Table Level Locking
Pada session dengan user root, masukkan beberapa data pada table yang telah kita buat.
Lakukan perintah SELECT untuk melakuka cek isi keseluruhan table.
Setelah berhasil mengisi table dengan beberapa data, buat hak akses kepada user baru
agar dapat mengakses basisdata yang sama dengan memasukkan perintah:
Font yang diberi warna merah adalah nama database dan font biru adalah user yang baru.
Sekarang buka koneksi pada user baru dan masukkan perintah untuk menggunakan basisdata
yang sama dengan session root:
Sekarang kedua session telah dapat menggunakan basisdata yang sama. Sekarang
masukkan perintah untuk melakukan lock table. Pada MySQL terdapat dua jenis locking table
yaitu READ dan WRITE. Perbedaannya adalah jika kita menggunakan READ, maka session
yang lain hanya bisa melakukan perintah SELECT. Sedangkan perintah WRITE, mengunci
sebuah table sehingga table tersebut tidak dapat di modifikasi dan bahkan di-SELECT.
grant all on db_baru.* TO 'naruto'@'localhost';
use db_baru;
a. READ
Masukkan perintah:
Font yang berwarna pink adalah nama table. Dengan memasukkan perintah tersebut kita
telah mengunci table mahasiswa dengan perintah READ. Jika melakukan insert data pada
session yang lain, hasilnya adalah sebagai berikut:
Dari screenshot tersebut terlihat proses terus menyatakan “running…” Karena menunggu
session yang melakukan lock untuk unlock. Namun jika kita jalankan perintah SELECT maka
berjalan dengan lancar.
lock table mahasiswa read;
Untuk melakukan unlock masukkan perintah:
Setelah melakukan unlock, maka pending selesai dan data baru akhirnya masuk.
unlock tables;
b. WRITE
Pada perintah write ini, session lain tidak bisa melakukan apapun pada table yang sama,
bahkan melakukan SELECT juga tidak bisa.
Perintah SELECT mengalami pending. Begitu pula perintah insert.
Setelah table di-unlock, data pada table baru bisa dimodifikasi.
2. Row Level Locking
Dalam My SQL, row level locking memiliki 2 jenis yaitu exclusive lock dan shared lock.
Kedua jenis lock ini sangat mirip. Session lain dapat melakukan SELECT pada record data yang
di-lock namun tidak dapat memodifikasi(UPDATE,DELETE) hingga session yang melakukan
lock COMMIT. Perbedaan utama yang kami temukan dari kedua jenis row lock ini adalah jika
suatu session menjalankan suatu shared lock, maka session lain dapat melakukan shared lock
pada record data yang sama. Sedangkan pada exclusive lock mengunci suatu row agar tidak di-
lock oleh session lain.
Buat table baru dengan menggunakan engine InnoDB dengan memasukkan perintah yang
sama dengan membuat table biasa namun tambahkan “ENGINE=InnoDB” pada akhir code.
Contoh:
Mengapa meggnukana InnoDB, karena ada beberapa perintah yang hanya dimiliki InnoDB.
Setelah itu isi table tersebut dengan beberapa data.
a. Shared lock
Setiap lock, baik shared maupun exclusive, selalu awali dengan memulai transaksi dengan
memasukkan perintah:
Kemudian untuk memulai lock pada session root, masukkan perintah:
Jadi, pada baris kode diatas, kami memilih suatu baris pada table t1 dengan a=1. Sehingga
session lain tidak dapat memodifikasi baris tersebut, namun dapat melakukan SELECT.
Saat session lain melakukan modifikasi
Sekarang kita akan mencoba untuk melakukan shared lock pada baris data yang sama dengan 2
session berbeda. Maka hasilnya adalah
Saat session lain melakukan SELECT
Kedua session menunjukkan lock mode berhasil. Untuk mengakhiri lock, lakukan COMMIT.
b. Exclusive lock
Pada exclusive lock, masalah baris data yang dimodifikasi sama dengan share lock(bisa di-
SELECT, namun tidak bisa UPDATE, DELETE). Jika suatu baris dilakukan exclusive lock pada
suatu session, session lain harus menunggu untuk dapat melakukan lock pada baris yang sama
baik exclusive atau shared.
Pertama, lakukan start transaksi kemudian masukkan perintah:
Dengan memasukkan perintah tersebut, kita telah melakukan lock exclusive pada baris dengan
a=1. Sekarang lakukan lock share pada session lain:
Pada screenshot diatas dapat dilihat bahwa proses selalu running karena masih menunggu session
lain untuk COMMIT. Sekarang kita lakukan exclusive lock pada session dengan user selain root
maka hasilnya akan running atau menunggu session yang melakukan lock untuk COMMIT:
ORACLE
Persiapan
Persiapan awal yang dilakukan untuk mendemokan konsep locking pada ORACLE
adalah sebagai berikut :
a. Mendaftarkan user pertama pada system
b. Mendaftarkan user kedua pada system
c. Memberikan hak akses untuk login ke database, membuat tabel dan mendapat semua hak
akses yang ada.
User gea :
User metik :
d. Memberikan hak akses objek.
User gea memberikan hak akses objek kepada user metik :
User metik memberikan hak akses objek kepada user gea :
1. Table level lock
Setiap tabel dapat dikunci dan proses pada tabel itu hanya dapat dilakukan oleh proses
yang mengunci table tersebut. Proses yang dapat mengakses table ini hanya proses yang
sifatnya membaca data dalam tabel.
Isolation level serializable yaitu menggunakan range lock untuk mencegah transaksi dari
insert, update dan delete beberapa baris dalam suatu rentang yang sedang dibaca oleh
transaksi lain. Level ini memproteksi dari ketiga masalah concurensy (dirty reads, non-
repeatable reads dan phantom reads).
Isolation level read commited (default SQL server) pada model ini database tidak
membolehkan transaksi untuk membaca data yang ditulis ke table oleh uncommitted
transaction. Model ini melindungi dari dirty reads, tapi tidak untuk melindungi non-
repeatable dan phantom reads.
Table lock :
 S-Lock, untuk SELECT/INSERT/UPDATE/DELETE row terhadap suatu
tabel.
 X-Lock, untuk DROP/ALTER suatu tabel.
a. SELECT TABLE (Table S-Lock)
Waktu User Gea User Metik
W1
SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE;
W2 SELECT * FROM rekening;
W3 DROP TABLE gea.rekening;
W4
GAGAL, karena ORACLE user gea
masih melock
W5 COMMIT;
W6
DROP TABLE gea.rekening;
BERHASIL, table berhasil dihapus.
Screenshoot user gea di W1
Screenshoot user gea di W2 dan W5
Screenshoot user metik di W3, W4
b. UPDATE TABLE (Table S-Lock)
Waktu User Gea User Metik
W1
UPDATE rekening SET saldo =
1500000 WHERE nama = ‘Wawan’ ;
W2 DROP TABLE gea.rekening;
W3
GAGAL, karena ORACLE user gea
masih melock
W4 COMMIT;
W5
DROP TABLE gea.rekening;
BERHASIL, table berhasil dihapus.
W6 COMMIT;
Screenshoot user gea di W1dan W4
Screenshoot user metik di W2, W3, W5 dan W6
c. DELETE TABLE (Table S-Lock)
Waktu User Gea User Metik
W1 SET TRANSACTION ISOLATION
LEVEL READ COMMITED;
SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE;
W2 DELETE FROM rekening WHERE
id = 1;
W3 ALTER TABLE gea.rekening ADD
umur char (2);
W4 GAGAL, karena ORACLE user gea
masih melock
W5 COMMIT;
W6 ALTER TABLE gea.rekening ADD
umur char (2);
BERHASIL
W7 COMMIT;
Screenshoot user gea di W1
Screenshoot user gea di W2 dan W5
Screenshoot user metik di W1, W3, W4, W6 dan W7
d. DROP dan UPDATE TABLE (Table X-Lock)
Waktu User Gea User Metik
W1 LOCK TABLE gea.mahasiswa in
EXCLUSIVE MODE;
W2 Locked.
W3 DROP TABLE mahasiswa;
W4 GAGAL, karena ORACLE user
metik masih melock
W5 UPDATE mahasiswa SET
nama=’hihi’ WHERE id=2;
W6 GAGAL, proses menunggu
W7 COMMIT;
W8 UPDATE berhasil
Screenshoot user metik di W1 dan W2
Screenshoot user gea di W3 dan W4
Screenshoot user gea di W5 dan W6
Screenshoot user metik di W7
e. ALTER dan INSERT TABLE (Table X-Lock)
Waktu User Gea User Metik
W1 LOCK TABLE gea.mahasiswa in
EXCLUSIVE MODE;
W2 Locked.
W3 ALTER TABLE gea.mahasiswa
ADD umur number (2);
W4 GAGAL, karena ORACLE user
metik masih melock
W5 INSERT INTO gea.mahasiswa
VALUES (03, ‘hoho’,003);
W6 GAGAL, proses menunggu
W7 COMMIT;
W8 INSERT berhasil.
Screenshoot user metik di W8
Screenshoot user gea di W1 dan W2
Screenshoot user metik di W3 dan W4
Screenshoot user metik di W5 dan W6
Screenshoot user gea di W1
2. Row level lock
Setiap baris data dapat di dikunci (lock) secara individual tanpa mempengaruhi baris data
yang lainnya. Hal ini untuk menjamin adanya data yang konsisten (consistent read).
Row lock hanya ada X-Lock, untuk UPDATE/DELETE
a. UPDATE ROW
Waktu User Gea User Metik
W1
UPDATE rekening SET
saldo=100000 WHERE
nama=’Raja’;
W2 UPDATE 1 [memegang X-Lock]
UPDATE gea.rekening SET
saldo=570000 WHERE nama=’Raja’;
W3
Akan menunggu sampai X-Lock
dilepas
W4
COMMIT;
[Melepas X-Lock]
W5 Update berhasil
Screenshoot user gea di W1, W2 dan W4
Screenshoot user metik di W2, W3 dan W5
b. DELETE ROW
Waktu User Gea User Metik
W1
DELETE FROM rekening WHERE
nama=’Raja’;
W2 DELETE 1 [memegang X-Lock]
UPDATE gea.rekening SET
saldo=500000 WHERE nama=’Raja’;
W3
Akan menunggu sampai X-Lock
dilepas
W4
COMMIT ;
[Melepas X-Lock]
W5
0 Rows updated. Nama Raja sudah
terhapus.
Screenshoot user gea di W1, W2 dan W4
Screenshoot user metik di W2, W3 dan W5
c. DELETE ROW
Waktu User Gea User Metik
W1
DELETE FROM rekening WHERE
nama=’Raja’;
W2 DELETE 1 [memegang X-Lock]
DELETE FROM gea.rekening
WHERE nama=’Raja’;
W3
Akan menunggu sampai X-Lock
dilepas
W4
COMMIT ;
[Melepas X-Lock]
W5
0 Rows deleted. Nama Raja sudah
terhapus.
Screenshoot user gea di W1, W2 dan W4
Screenshoot user metik di W2, W3 dan W5
KESIMPULAN
Table Locking
 Terdapat persamaan antara mode read pada MySQL dengan mode exclusive pada
ORACLE, yaitu kedua mode tidak memperbolehkan adanya transaksi apapun dari
session lain kecuali SELECT.
 Mode write MySQL adalah tidak memperbolehkan transaksi apapun dari session lain.
 Mode shared pada ORACLE memperbolehkan adanya transaksi SELECT, INSERT,
UPDATE dan DELETE row pada suatu tabel.
Row Locking
 Row pada ORACLE hanya bisa menerapkan mode exclusive.
 Row pada MySQL terdapat mode shared dan exclusive.

More Related Content

What's hot

Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sqlLela Warni
 
Mata Kuliah Basis Data
Mata Kuliah Basis DataMata Kuliah Basis Data
Mata Kuliah Basis DataMr. Nugraha
 
Sistem pendaftaran pasien dan rekam medis klinik
Sistem pendaftaran pasien dan rekam medis klinikSistem pendaftaran pasien dan rekam medis klinik
Sistem pendaftaran pasien dan rekam medis klinikSyilvia Fhelisia
 
Pertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknisPertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknisBuhori Muslim
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsilaurensius08
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyZaenal Khayat
 
Power Point Presentasi Komunikasi Data
Power Point Presentasi Komunikasi DataPower Point Presentasi Komunikasi Data
Power Point Presentasi Komunikasi Datadodolbetawi
 
Makalah Aplikasi Database Maskapai Penerbangan
Makalah Aplikasi Database Maskapai PenerbanganMakalah Aplikasi Database Maskapai Penerbangan
Makalah Aplikasi Database Maskapai PenerbanganInsan Cahya Setia
 
Tugas sistem basis data kelompok
Tugas sistem basis data kelompokTugas sistem basis data kelompok
Tugas sistem basis data kelompokFriska Nuraini
 
unit kontrol
unit kontrolunit kontrol
unit kontroldewi2093
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Devi Apriansyah
 
Evolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakEvolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakFebry San
 
Basis Data : Pemodelan Erd
Basis Data : Pemodelan ErdBasis Data : Pemodelan Erd
Basis Data : Pemodelan Erdamalianuryamin
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAri Septiawan
 
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"Cindy_Jenyffer
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatanBuhori Muslim
 
Modul bahan-ajar-kecerdasan-buatan-ptiik-final
Modul bahan-ajar-kecerdasan-buatan-ptiik-finalModul bahan-ajar-kecerdasan-buatan-ptiik-final
Modul bahan-ajar-kecerdasan-buatan-ptiik-finalRamla Lamantha
 

What's hot (20)

Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sql
 
Mata Kuliah Basis Data
Mata Kuliah Basis DataMata Kuliah Basis Data
Mata Kuliah Basis Data
 
Sistem pendaftaran pasien dan rekam medis klinik
Sistem pendaftaran pasien dan rekam medis klinikSistem pendaftaran pasien dan rekam medis klinik
Sistem pendaftaran pasien dan rekam medis klinik
 
Pertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknisPertemuan 2.1 perkembangan teknis
Pertemuan 2.1 perkembangan teknis
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
Power Point Presentasi Komunikasi Data
Power Point Presentasi Komunikasi DataPower Point Presentasi Komunikasi Data
Power Point Presentasi Komunikasi Data
 
Makalah Aplikasi Database Maskapai Penerbangan
Makalah Aplikasi Database Maskapai PenerbanganMakalah Aplikasi Database Maskapai Penerbangan
Makalah Aplikasi Database Maskapai Penerbangan
 
Tugas sistem basis data kelompok
Tugas sistem basis data kelompokTugas sistem basis data kelompok
Tugas sistem basis data kelompok
 
unit kontrol
unit kontrolunit kontrol
unit kontrol
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)
 
SURAT MASAL.pdf
SURAT MASAL.pdfSURAT MASAL.pdf
SURAT MASAL.pdf
 
Manajemen file
Manajemen fileManajemen file
Manajemen file
 
Evolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakEvolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunak
 
Basis Data : Pemodelan Erd
Basis Data : Pemodelan ErdBasis Data : Pemodelan Erd
Basis Data : Pemodelan Erd
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"
My Project "Sistem Database (MySQL) : Pemesanan Makanan dan Minuman Online"
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 
Sistem basis data 4
Sistem basis data 4Sistem basis data 4
Sistem basis data 4
 
Modul bahan-ajar-kecerdasan-buatan-ptiik-final
Modul bahan-ajar-kecerdasan-buatan-ptiik-finalModul bahan-ajar-kecerdasan-buatan-ptiik-final
Modul bahan-ajar-kecerdasan-buatan-ptiik-final
 

Similar to Demo Komparasi Row dan Table Locking pada MySQL dengan Oracleg11

Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQL
Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQLModul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQL
Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQLnurcholistri
 
Oracle Administrator - Locking presentation
Oracle Administrator - Locking presentationOracle Administrator - Locking presentation
Oracle Administrator - Locking presentationMuhaimin Soltief
 
Di2k sq lite-command-line
Di2k sq lite-command-lineDi2k sq lite-command-line
Di2k sq lite-command-linefajarnugroho_id
 
Instalasi Oracle Xe Dan Administrasi User
Instalasi Oracle Xe Dan Administrasi UserInstalasi Oracle Xe Dan Administrasi User
Instalasi Oracle Xe Dan Administrasi UserLaboratorium Sirkel
 
ORACLE Di Virtual Box : Ringkasan Penggunaan
ORACLE Di Virtual Box : Ringkasan PenggunaanORACLE Di Virtual Box : Ringkasan Penggunaan
ORACLE Di Virtual Box : Ringkasan PenggunaanAgus SA
 
Kp.5 obyek premier database
Kp.5 obyek premier databaseKp.5 obyek premier database
Kp.5 obyek premier databaseDesty Yani
 
PostgreSQL Transaksi
PostgreSQL TransaksiPostgreSQL Transaksi
PostgreSQL TransaksiAmmar Shadiq
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriSyarif Fudin
 
Tutorial membuat form dalam netbeans versi2
Tutorial membuat form dalam netbeans versi2Tutorial membuat form dalam netbeans versi2
Tutorial membuat form dalam netbeans versi2zuckcruel
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Devi Apriansyah
 
setup widget dan work directory matlab
setup widget dan work directory matlabsetup widget dan work directory matlab
setup widget dan work directory matlabsoftscients
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis dataAgung Sakepris
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis datahairul anwar
 
Distributed Database Using Oracle
Distributed Database Using OracleDistributed Database Using Oracle
Distributed Database Using OracleLaboratorium Sirkel
 
SISTEM BASIS DATA
SISTEM BASIS DATASISTEM BASIS DATA
SISTEM BASIS DATARahmad Deni
 

Similar to Demo Komparasi Row dan Table Locking pada MySQL dengan Oracleg11 (20)

Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQL
Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQLModul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQL
Modul Komparasi Locking Mechanism dan Deadlock Pada Oracle dan MySQL
 
Oracle Administrator - Locking presentation
Oracle Administrator - Locking presentationOracle Administrator - Locking presentation
Oracle Administrator - Locking presentation
 
Di2k sq lite-command-line
Di2k sq lite-command-lineDi2k sq lite-command-line
Di2k sq lite-command-line
 
Instalasi Oracle Xe Dan Administrasi User
Instalasi Oracle Xe Dan Administrasi UserInstalasi Oracle Xe Dan Administrasi User
Instalasi Oracle Xe Dan Administrasi User
 
ORACLE Di Virtual Box : Ringkasan Penggunaan
ORACLE Di Virtual Box : Ringkasan PenggunaanORACLE Di Virtual Box : Ringkasan Penggunaan
ORACLE Di Virtual Box : Ringkasan Penggunaan
 
Kp.5 obyek premier database
Kp.5 obyek premier databaseKp.5 obyek premier database
Kp.5 obyek premier database
 
Tutorial membuat form dalam netbeans
Tutorial membuat form dalam netbeansTutorial membuat form dalam netbeans
Tutorial membuat form dalam netbeans
 
PostgreSQL Transaksi
PostgreSQL TransaksiPostgreSQL Transaksi
PostgreSQL Transaksi
 
Tupen 7 1235010002
Tupen 7 1235010002Tupen 7 1235010002
Tupen 7 1235010002
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajri
 
Tutorial membuat form dalam netbeans versi2
Tutorial membuat form dalam netbeans versi2Tutorial membuat form dalam netbeans versi2
Tutorial membuat form dalam netbeans versi2
 
Lapres 7 1235010002
Lapres 7 1235010002Lapres 7 1235010002
Lapres 7 1235010002
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
 
Ajar mysql5 1
Ajar mysql5 1Ajar mysql5 1
Ajar mysql5 1
 
setup widget dan work directory matlab
setup widget dan work directory matlabsetup widget dan work directory matlab
setup widget dan work directory matlab
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis data
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis data
 
Pembuatan user di oracle
Pembuatan user di oraclePembuatan user di oracle
Pembuatan user di oracle
 
Distributed Database Using Oracle
Distributed Database Using OracleDistributed Database Using Oracle
Distributed Database Using Oracle
 
SISTEM BASIS DATA
SISTEM BASIS DATASISTEM BASIS DATA
SISTEM BASIS DATA
 

Demo Komparasi Row dan Table Locking pada MySQL dengan Oracleg11

  • 1. LAPORAN SISTEM MANAJEMAN BASISDATA KOMPARASI ROW DAN TABLE LOCKING ANTARA ORACLE DENGAN MYSQL DISUSUN OLEH : Galih Nalendro (14523047) Hilda Indriani Gea (14523231) Desty Metik Mentarie (14523272) Philo Mushofi El Haries (14523310) JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS ISLAM INDONESIA 2017
  • 2. PENGERTIAN LOCKING  Lock pada database berarti suatu kunci atau penguncian. Lock digunakan pada saat terjadi pengaksesan database oleh user secara bersamaan. Hal ini ditujukan untuk menjaga data agar tidak corrupt/hilang atau data yang tidak valid pada saat banyak user mengakses database secara bersamaan/konkuren. Dalam laporan ini, penulis membandingkan konsep locking pada 2 DBMS yaitu a. MySQL b. ORACLE.
  • 3. MySQL Persiapan Kami menggunakan perangkat lunak MySQL Workbench. Perangkat lunak ini merupakan salah satu perangkat lunak yang memungkinkan pengguna untuk menjalankan 2 session yang mengakses basisdata yang sama. Ditambah lagi perangkat lunak ini memiliki GUI yang sangat membantu untuk berbagai aktivitas manajemen basisdata, contohnya membuat basisdata, table, skema dan sebaginya. Perangkat lunak ini dapat di unduh di https://dev.mysql.com/downloads/workbench/ Setelah mengunduh MySQL Workbench, kemudian install dan buka perangkat lunak tersebut. Pertama-tama pastikan anda telah meng-install XAMPP terlebih dahulu dan menjalankan modul MySQL. Kemudian kembali ke aplikasi Workbench, buatlah koneksi dengan cara klik lambing ‘+’ pada MySQL Connection (terletak pada kiri atas layar)
  • 4. Setelah itu akan muncul dialog-box setup untuk koneksi yang akan kita buat. Isi bebas dialog-box tersebut pada connection name, karena nama koneksi wajib diisi pada aplikasi ini. Kami membuat koneksi dengan nama “simbada_try1”. Text field yang lain cukup dibiarkan saja sesuai default. Klik ‘Test Connection’ pada bawah kanan untuk mengecek koneksi apakah berjalan atau tidak. Jika sudah muncul dialog-box baru seperti dibawah ini, maka koneksi berjalan lancar.
  • 5. Kemudian buka koneksi tersebut. Kemudian buat basisdata baru, dengan cara klik create new scheme. Maka akan muncul dialog-box untuk setup scheme seperti dibawah ini
  • 6. Isi nama scheme dan klik Apply. Pada percobaan ini kami memberi nama “db_baru”. Setelah selesai tambahkan table pada scheme yang baru saja dibuat. Caranya dengan klik panah kekanan pada nama schema yang tertera pada kolom paling kiri kemudian klik kanan pada “tables” kemudian pilih Create Table. Setelah membuat table, kemudian membuat user baru untuk percobaan dengan 2 session. Caranya klik users dan privileges pada kolom paling kiri. Kemudian akan muncul dialog-box berikut.
  • 7. Buat akun baru dengan klik Add Account, kemudian isi formnya. Kami menggunakan login name “naruto” dengan password yang sama dengan login name. Setelah itu kembali ke halaman home untuk membuat koneksi baru. Caranya sama dengan membuat koneksi pertama kali dengan user ‘root’, namun sekarang ganti usernya dengan user yang baru kita buat dan isi passwordnya. Kami menggunakan nama koneksi “koneksiNaruto”. Kini telah ada 2 koneksi maka persiapan telah selesai.
  • 8. 1. Table Level Locking Pada session dengan user root, masukkan beberapa data pada table yang telah kita buat. Lakukan perintah SELECT untuk melakuka cek isi keseluruhan table. Setelah berhasil mengisi table dengan beberapa data, buat hak akses kepada user baru agar dapat mengakses basisdata yang sama dengan memasukkan perintah: Font yang diberi warna merah adalah nama database dan font biru adalah user yang baru. Sekarang buka koneksi pada user baru dan masukkan perintah untuk menggunakan basisdata yang sama dengan session root: Sekarang kedua session telah dapat menggunakan basisdata yang sama. Sekarang masukkan perintah untuk melakukan lock table. Pada MySQL terdapat dua jenis locking table yaitu READ dan WRITE. Perbedaannya adalah jika kita menggunakan READ, maka session yang lain hanya bisa melakukan perintah SELECT. Sedangkan perintah WRITE, mengunci sebuah table sehingga table tersebut tidak dapat di modifikasi dan bahkan di-SELECT. grant all on db_baru.* TO 'naruto'@'localhost'; use db_baru;
  • 9. a. READ Masukkan perintah: Font yang berwarna pink adalah nama table. Dengan memasukkan perintah tersebut kita telah mengunci table mahasiswa dengan perintah READ. Jika melakukan insert data pada session yang lain, hasilnya adalah sebagai berikut: Dari screenshot tersebut terlihat proses terus menyatakan “running…” Karena menunggu session yang melakukan lock untuk unlock. Namun jika kita jalankan perintah SELECT maka berjalan dengan lancar. lock table mahasiswa read;
  • 10. Untuk melakukan unlock masukkan perintah: Setelah melakukan unlock, maka pending selesai dan data baru akhirnya masuk. unlock tables;
  • 11. b. WRITE Pada perintah write ini, session lain tidak bisa melakukan apapun pada table yang sama, bahkan melakukan SELECT juga tidak bisa. Perintah SELECT mengalami pending. Begitu pula perintah insert. Setelah table di-unlock, data pada table baru bisa dimodifikasi.
  • 12. 2. Row Level Locking Dalam My SQL, row level locking memiliki 2 jenis yaitu exclusive lock dan shared lock. Kedua jenis lock ini sangat mirip. Session lain dapat melakukan SELECT pada record data yang di-lock namun tidak dapat memodifikasi(UPDATE,DELETE) hingga session yang melakukan lock COMMIT. Perbedaan utama yang kami temukan dari kedua jenis row lock ini adalah jika suatu session menjalankan suatu shared lock, maka session lain dapat melakukan shared lock pada record data yang sama. Sedangkan pada exclusive lock mengunci suatu row agar tidak di- lock oleh session lain. Buat table baru dengan menggunakan engine InnoDB dengan memasukkan perintah yang sama dengan membuat table biasa namun tambahkan “ENGINE=InnoDB” pada akhir code. Contoh: Mengapa meggnukana InnoDB, karena ada beberapa perintah yang hanya dimiliki InnoDB. Setelah itu isi table tersebut dengan beberapa data. a. Shared lock Setiap lock, baik shared maupun exclusive, selalu awali dengan memulai transaksi dengan memasukkan perintah: Kemudian untuk memulai lock pada session root, masukkan perintah: Jadi, pada baris kode diatas, kami memilih suatu baris pada table t1 dengan a=1. Sehingga session lain tidak dapat memodifikasi baris tersebut, namun dapat melakukan SELECT. Saat session lain melakukan modifikasi
  • 13. Sekarang kita akan mencoba untuk melakukan shared lock pada baris data yang sama dengan 2 session berbeda. Maka hasilnya adalah Saat session lain melakukan SELECT
  • 14. Kedua session menunjukkan lock mode berhasil. Untuk mengakhiri lock, lakukan COMMIT. b. Exclusive lock Pada exclusive lock, masalah baris data yang dimodifikasi sama dengan share lock(bisa di- SELECT, namun tidak bisa UPDATE, DELETE). Jika suatu baris dilakukan exclusive lock pada suatu session, session lain harus menunggu untuk dapat melakukan lock pada baris yang sama baik exclusive atau shared. Pertama, lakukan start transaksi kemudian masukkan perintah:
  • 15. Dengan memasukkan perintah tersebut, kita telah melakukan lock exclusive pada baris dengan a=1. Sekarang lakukan lock share pada session lain: Pada screenshot diatas dapat dilihat bahwa proses selalu running karena masih menunggu session lain untuk COMMIT. Sekarang kita lakukan exclusive lock pada session dengan user selain root maka hasilnya akan running atau menunggu session yang melakukan lock untuk COMMIT:
  • 16. ORACLE Persiapan Persiapan awal yang dilakukan untuk mendemokan konsep locking pada ORACLE adalah sebagai berikut : a. Mendaftarkan user pertama pada system b. Mendaftarkan user kedua pada system c. Memberikan hak akses untuk login ke database, membuat tabel dan mendapat semua hak akses yang ada. User gea : User metik : d. Memberikan hak akses objek. User gea memberikan hak akses objek kepada user metik : User metik memberikan hak akses objek kepada user gea :
  • 17. 1. Table level lock Setiap tabel dapat dikunci dan proses pada tabel itu hanya dapat dilakukan oleh proses yang mengunci table tersebut. Proses yang dapat mengakses table ini hanya proses yang sifatnya membaca data dalam tabel. Isolation level serializable yaitu menggunakan range lock untuk mencegah transaksi dari insert, update dan delete beberapa baris dalam suatu rentang yang sedang dibaca oleh transaksi lain. Level ini memproteksi dari ketiga masalah concurensy (dirty reads, non- repeatable reads dan phantom reads). Isolation level read commited (default SQL server) pada model ini database tidak membolehkan transaksi untuk membaca data yang ditulis ke table oleh uncommitted transaction. Model ini melindungi dari dirty reads, tapi tidak untuk melindungi non- repeatable dan phantom reads. Table lock :  S-Lock, untuk SELECT/INSERT/UPDATE/DELETE row terhadap suatu tabel.  X-Lock, untuk DROP/ALTER suatu tabel.
  • 18. a. SELECT TABLE (Table S-Lock) Waktu User Gea User Metik W1 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; W2 SELECT * FROM rekening; W3 DROP TABLE gea.rekening; W4 GAGAL, karena ORACLE user gea masih melock W5 COMMIT; W6 DROP TABLE gea.rekening; BERHASIL, table berhasil dihapus. Screenshoot user gea di W1 Screenshoot user gea di W2 dan W5
  • 20. b. UPDATE TABLE (Table S-Lock) Waktu User Gea User Metik W1 UPDATE rekening SET saldo = 1500000 WHERE nama = ‘Wawan’ ; W2 DROP TABLE gea.rekening; W3 GAGAL, karena ORACLE user gea masih melock W4 COMMIT; W5 DROP TABLE gea.rekening; BERHASIL, table berhasil dihapus. W6 COMMIT; Screenshoot user gea di W1dan W4 Screenshoot user metik di W2, W3, W5 dan W6
  • 21. c. DELETE TABLE (Table S-Lock) Waktu User Gea User Metik W1 SET TRANSACTION ISOLATION LEVEL READ COMMITED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; W2 DELETE FROM rekening WHERE id = 1; W3 ALTER TABLE gea.rekening ADD umur char (2); W4 GAGAL, karena ORACLE user gea masih melock W5 COMMIT; W6 ALTER TABLE gea.rekening ADD umur char (2); BERHASIL W7 COMMIT; Screenshoot user gea di W1
  • 22. Screenshoot user gea di W2 dan W5 Screenshoot user metik di W1, W3, W4, W6 dan W7
  • 23. d. DROP dan UPDATE TABLE (Table X-Lock) Waktu User Gea User Metik W1 LOCK TABLE gea.mahasiswa in EXCLUSIVE MODE; W2 Locked. W3 DROP TABLE mahasiswa; W4 GAGAL, karena ORACLE user metik masih melock W5 UPDATE mahasiswa SET nama=’hihi’ WHERE id=2; W6 GAGAL, proses menunggu W7 COMMIT; W8 UPDATE berhasil Screenshoot user metik di W1 dan W2 Screenshoot user gea di W3 dan W4 Screenshoot user gea di W5 dan W6 Screenshoot user metik di W7
  • 24. e. ALTER dan INSERT TABLE (Table X-Lock) Waktu User Gea User Metik W1 LOCK TABLE gea.mahasiswa in EXCLUSIVE MODE; W2 Locked. W3 ALTER TABLE gea.mahasiswa ADD umur number (2); W4 GAGAL, karena ORACLE user metik masih melock W5 INSERT INTO gea.mahasiswa VALUES (03, ‘hoho’,003); W6 GAGAL, proses menunggu W7 COMMIT; W8 INSERT berhasil. Screenshoot user metik di W8 Screenshoot user gea di W1 dan W2 Screenshoot user metik di W3 dan W4
  • 25. Screenshoot user metik di W5 dan W6 Screenshoot user gea di W1
  • 26. 2. Row level lock Setiap baris data dapat di dikunci (lock) secara individual tanpa mempengaruhi baris data yang lainnya. Hal ini untuk menjamin adanya data yang konsisten (consistent read). Row lock hanya ada X-Lock, untuk UPDATE/DELETE a. UPDATE ROW Waktu User Gea User Metik W1 UPDATE rekening SET saldo=100000 WHERE nama=’Raja’; W2 UPDATE 1 [memegang X-Lock] UPDATE gea.rekening SET saldo=570000 WHERE nama=’Raja’; W3 Akan menunggu sampai X-Lock dilepas W4 COMMIT; [Melepas X-Lock] W5 Update berhasil Screenshoot user gea di W1, W2 dan W4 Screenshoot user metik di W2, W3 dan W5
  • 27. b. DELETE ROW Waktu User Gea User Metik W1 DELETE FROM rekening WHERE nama=’Raja’; W2 DELETE 1 [memegang X-Lock] UPDATE gea.rekening SET saldo=500000 WHERE nama=’Raja’; W3 Akan menunggu sampai X-Lock dilepas W4 COMMIT ; [Melepas X-Lock] W5 0 Rows updated. Nama Raja sudah terhapus. Screenshoot user gea di W1, W2 dan W4 Screenshoot user metik di W2, W3 dan W5
  • 28. c. DELETE ROW Waktu User Gea User Metik W1 DELETE FROM rekening WHERE nama=’Raja’; W2 DELETE 1 [memegang X-Lock] DELETE FROM gea.rekening WHERE nama=’Raja’; W3 Akan menunggu sampai X-Lock dilepas W4 COMMIT ; [Melepas X-Lock] W5 0 Rows deleted. Nama Raja sudah terhapus. Screenshoot user gea di W1, W2 dan W4 Screenshoot user metik di W2, W3 dan W5
  • 29. KESIMPULAN Table Locking  Terdapat persamaan antara mode read pada MySQL dengan mode exclusive pada ORACLE, yaitu kedua mode tidak memperbolehkan adanya transaksi apapun dari session lain kecuali SELECT.  Mode write MySQL adalah tidak memperbolehkan transaksi apapun dari session lain.  Mode shared pada ORACLE memperbolehkan adanya transaksi SELECT, INSERT, UPDATE dan DELETE row pada suatu tabel. Row Locking  Row pada ORACLE hanya bisa menerapkan mode exclusive.  Row pada MySQL terdapat mode shared dan exclusive.