MANAJEMEN TRANSAKSI BASISDATA -...
Transcript of MANAJEMEN TRANSAKSI BASISDATA -...
MANAJEMEN TRANSAKSI BASISDATA
1
Part #2
2
Scheduler adalah proses DBMS khusus yang membuat urutan eksekusi operasi dalam transaksi konkuren. Scheduler meng-interleave eksekusi dari operasi database untuk memastikan serializability & isolation dari transaksi. Untuk menentukan urutan yang benar, scheduler melakukan aksinya berdasarkan algoritma kontrol konkurensi, seperti metode locking atau timestamping.
Scheduler aims to set the SQL operation schedule
3
Hasil Operasi Read No conflict Write Conflict
4
Lock menjamin penggunaan item data secara eksklusif untuk transaksi yang sedang berjalan. Transaksi mengunci data yang diakses; lock akan dilepas ketika transaksi selesai sehingga transaksi lain dapat mengunci item data untuk digunakan. Semua informasi lock ditangani oleh lock manager, yang bertanggung jawab untuk memberikan & mengatur lock yang digunakan oleh transaksi.
5
Lock granularity menandakan tingkat dari penggunaan lock * Database
Database dikunci, sehingga mencegah penggunaan tabel dalam database oleh
transaksi T2, sementara transaksi T1 dieksekusi. Sesuai untuk proses batch, tetapi tidak sesuai untuk DBMS multiuser.
* Tabel
Tabel dikunci, mencegah akses ke baris oleh transaksi T2 sementara transaksi T1 sedang menggunakan tabel. Akan tetapi, 2 transaksi dapat mengakses database yang sama selama mereka mengakses tabel yang berbeda. Tidak sesuai untuk DBMS multiuser.
6
* Baris
DBMS mengizinkan transaksi konkuren untuk mengakses baris yang berbeda dari tabel yang sama walaupun baris tersebut berada di halaman yang sama. Membutuhkan overhead yang tinggi karena kunci diberikan untuk tiap baris.
* Field Transaksi konkuren dapat mengakses baris yang sama selama mereka menggunakan field (atribut) yang berbeda dalam baris tersebut. Paling fleksibel untuk akses data multiuser tetapi jarang diimplementasikan dalam DBMS karena membutuhkan overhead yang sangat tinggi.
7
8
Lock Tingkat Tabel
9
Lock Tingkat Baris
10
Konkurensi pesimistik Sinkronisasi eksekusi transaksi dilakukan mulai dari awal siklus eksekusi transaksi. Baris-baris data dikunci sebelum dimodifikasi, sehingga tidak ada transaksi lain yang bisa mengaksesnya, kecuali setelah kunci dibebaskan. Terdapat tiga jenis mekanisme pesimistik yang bisa digunakan, yaitu locking, timestamp (row-version), dan gabungan keduanya (hybrid). Metode pesimistik ini menjamin perubahan data bisa dilaksanakan dengan aman. Kekurangan metode ini terletak pada munculnya delay jika transaksi berjalan lambat atau data hasil modifikasi transaksinya tidak segera disimpan ke hardisk (commit)
Fase pengendalian metode pesimistik :
11
Konkurensi optimistik Sinkronisasi transaksi ditunda hingga transaksi selesai dieksekusi. Proses validasi data hanya dilakukan ketika transaksi hendak menyimpan data secara permanen ke hardisk. Terdapat dua jenis mekanisme optmistik: locking dan timestamp (row-version). Dengan metode optimistik, sejumlah transaksi tetap bisa dieksekusi bersamaan tanpa harus saling menunggu. Kekurangannya terletak pada kemungkinan terjadinya tumpang tindih data, karena tidak ada jaminan bahwa data yang dimodifikasi adalah data asli, belum diubah oleh transaksi lainnya
Fase pengendalian metode optimistik :
12
Contoh $res = mysql_query("SELECT value FROM counter WHERE
name='counter1'");
list ($value) = mysql_fetch_row($res);
$value++;
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value WHERE
name='counter1'");
Apa Masalahnya ?
Solusi 1 // tidak perlu ambil nilai counter dulu...
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value+1 WHERE
name='counter1'");
13
Solusi 2
Melakukan locking terhadap tabel
mysql_query("LOCK TABLES counter");
$res = mysql_query("SELECT value FROM counter WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value+1 WHERE name='counter1'");
mysql_query("UNLOCK TABLES");
Solusi 3 Melakukan locking terhadap record
mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value +1WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");
14
Kontrol Konkurensi dengan Metode Locking
Selain tingkat locking, Jenis Locking DBMS dapat berbentuk: o Exclusive lock : jika suatu table sedang berada dalam kondisi ini maka hanya
proses yang melakukan penguncian yang dapat mengakses table tersebut. o Shared lock : jika suatu table sedang berada dalam kondisi ini maka table
tersebut dapat melaksanakan perintah SELECT dari proses lain tetapi datanya tidak dapat dirubah dengan menggunakan perintah UPDATE, INSERT, ataupun DELETE baik dari proses yang menguncinya apalagi dari proses lainnya.
WRITE : locking akan bersifat exclusive , jika user ingin mengupdate (baca+tulis) tabel) READ : locking bersifat shared, jika user hanya ingin membaca tabel User harus melepas semua lock ketika semua transaksi telah selesai
15
Kontrol Konkurensi dengan Metode Locking
16
Kontrol Konkurensi dengan Metode Locking
locking terhadap tabel
Contoh 1
17
Kontrol Konkurensi dengan Metode Locking
locking terhadap tabel
Contoh 2 Catatan Locking pada PHP : 1. PHP tidak memiliki fungsi khusus untuk menangani locking 2. Locking dilakukan melalui perintah SQL yang dikirim ke server MySQL melalui perintah mysql_query 3. Perintah LOCK dan UNLOCK harus berada dalam satu skrip 4. PHP akan melakukan UNLOCK secara otomatis pada saat skrip selesai dijalankan walaupun tidak secara eskplisit dituliskan perintah UNLOCK
18
Kontrol Konkurensi dengan Metode Locking
Contoh 2 Field Type Description
idtemp int(10) Primary Key Auto Increment
Name varchar (30)
Table ‘temp’
‘A’ Session
mysql>lock tables temp write
mysql>insert into temp values(1,"a");
mysql>insert into temp values(2,“b");
....
mysql>insert into temp values(30,“z");
mysql>unlock tables;
‘B’ Session
mysql>insert into temp(name) values("xy");
the process will be pending until ‘A’ session is completed
locking terhadap tabel
19
Lock dapat menyebabkan 2 masalah berikut :
Walaupun penggunaan shared lock memberikan akses data yang lebih efisien, tapi shared/ exclusive lock meningkatkan overhead lock manager untuk alasan berikut:
- Jenis lock harus diketahui sebelum lock diberikan. - Terdapat 3 operasi lock: READ_LOCK untuk memeriksa jenis lock,
WRITE_LOCK untuk mengunci, & UNLOCK untuk melepas kunci. - Adanya izin untuk mengupgrade lock dari shared ke exclusive &
mendowngrade dari exclusive ke shared. Lock dapat menyebabkan 2 masalah berikut: - Jadwal transaksi mungkin tidak serializable dapat diatasi dengan two-
phase locking. - Terjadi deadlock yang muncul ketika 2 transaksi menunggu satu sama lain
untuk melepas kunci data dapat diatasi dengan teknik deteksi & pencegahan deadlock.
Kontrol Konkurensi dengan Metode Locking
20
Two Phase Locking
Mendefinisikan bagaimana transaksi memperoleh & melepaskan
kunci.
Menjamin serializability tetapi tidak mencegah deadlock.
Terdiri dari 2 tahap yaitu:
* Growing phase transaksi memperoleh semua kunci yang
diperlukan tanpa melepas kunci data apapun. Setelah semua
kunci diperoleh, transaksi berada dalam posisi terkunci.
* Shrinking phase transaksi melepaskan semua kunci & tidak
dapat memperoleh kunci baru.
Dikendalikan oleh aturan berikut:
* Dua transaksi tidak dapat memiliki kunci yang saling bertentangan.
* Tidak ada operasi unlock yang dapat mendahului operasi lock
dalam transaksi yang sama.
* Tidak ada data yang diproses sampai semua kunci diperoleh –
yaitu sampai transaksi berada dalam posisi terkunci.
21
Protokol Two Phase Locking (2PL)
Two Phase Locking (2PL) dapat membantu mencegah masalah : Lost Update Uncommitted Data unconsistent Retriveals
22
Teknik Pengendalian Deadlock
Deadlock prevention transaksi yang meminta kunci baru dibatalkan ketika terdapat kemungkinan terjadinya deadlock. Jika transaksi dibatalkan, semua perubahan yang dilakukannya akan dikembalikan & semua kunci akan dilepas. Transaksi ini kemudian dijadwalkan ulang untuk eksekusi. Direkomendasikan jika kemungkinan terjadinya deadlock tinggi. Deadlock detection DBMS menguji database secara berkala untuk deadlock. Jika deadlock ditemukan, maka transaksi korban dibatalkan & transaksi lain dilanjutkan. Direkomendasikan jika kemungkinan terjadinya deadlock rendah. Deadlock avoidance transaksi harus mendapatkan semua kunci yang dibutuhkan sebelum dieksekusi. Teknik ini menghindari pembatalan dari transaksi yang bertentangan dengan mendapatkan lock agar berhasil. Direkomendasikan jika waktu respon rendah pada daftar prioritas sistem.
23
Proses Terjadinya Deadlock
Pemodelan deadlock
24
Kontrol Konkurensi dengan Metode Timestamping
o Pendekatan timestamping memberikan timestamp unik untuk tiap transaksi.
o Nilai timestamp menghasilkan urutan dimana transaksi diberikan ke DBMS.
o Timestamp harus memiliki 2 properti: - Keunikan memastikan tidak ada nilai timestamp yang sama. - Monotonicity memastikan nilai timestamp selalu meningkat. o Semua operasi database (baca & tulis) dalam transaksi yang sama
harus memiliki timestamp yang sama. DBMS mengeksekusi operasi yang bertentangan dalam urutan timestamp, sehingga memastikan serializability dari transaksi. Jika 2 transaksi bertentangan, satu dihentikan, dikembalikan, dijadwal ulang, & diberikan nilai timestamp baru.
o Kekurangannya adalah tiap nilai yang disimpan dalam database membutuhkan 2 field timestamp tambahan: 1 untuk terakhir kali field dibaca & 1 untuk update terakhir. Timestamp juga meningkatkan kebutuhan memori & overhead pemrosesan database.
25
Skema Wait/ Die & Wound/ Wait
Dalam skema wait/ die: Jika transaksi yang meminta kunci adalah yang tertua dari 2 transaksi, maka ia
akan menunggu (wait) sampai transaksi lain selesai & kunci dilepas. Jika transaksi yang meminta kunci adalah yang termuda dari 2 transaksi, maka
ia akan dibatalkan (die) & dijadwalkan ulang menggunakan timestamp yang sama.
Singkatnya, transaksi yang lebih tua menunggu yang lebih muda untuk selesai & melepas kuncinya. Dalam skema wound/ wait: Jika transaksi yang meminta kunci adalah yang tertua dari 2 transaksi, maka ia
akan mendahului (wound) transaksi yang lebih muda dengan membatalkannya.
Jika transaksi yang meminta kunci adalah yang termuda dari 2 transaksi, maka ia akan menunggu sampai transaksi lain selesai & kunci dilepas.
Singkatnya, transaksi yang lebih tua membatalkan & menjadwalkan ulang transaksi yang lebih muda.
26
Skema Wait/ Die & Wound/ Wait
27
Kontrol Konkurensi dengan Metode Optimistik
Metode optimistik berdasarkan pada asumsi bahwa kebanyakan operasi database tidak bertentangan.
Pendekatan ini tidak membutuhkan teknik locking atau timestamp. Akan tetapi, transaksi dieksekusi tanpa larangan sampai dicommit.
Pendekatan ini melalui 2 atau 3 tahap: 1) Selama tahap read, transaksi membaca database, mengeksekusi
komputasi yang dibutuhkan, & membuat update salinan pribadi dari nilai database. Semua operasi update dari transaksi dicatat dalam sebuah file update sementara, yang tidak diakses oleh transaksi yang tersisa.
2) Selama tahap validation, transaksi divalidasi untuk memastikan bahwa perubahan yang dibuat tidak mempengaruhi integritas & konsistensi dari database. Jika uji validasi positif, transaksi lanjut ke tahap write. Jika uji validasi negatif, transaksi diulang & perubahan dibuang.
3) Selama tahap write, perubahan disimpan secara permanen ke database.
28
Tugas Akhir Semester
Buatlah aplikasi untuk mengelola data instructor dengan menggunakan bahasa
Pemrograman tertentu (misalnya PHP), petunjuk teknis sebagai berikut :
1. Buat tabel instructor : create table instructor (ID varchar (5), name varchar (20) not null,
dept_name varchar (20), salary numeric (8,2), primary key (ID));
2. Contoh layout aplikasi : Insert Edit Delete Display Exit
Instrcutor ID Name Department Salary
Instructur, Edit Record
15151
Mozart
Comp. Sci.
40000
Save Reset cancel
Record is edited by another user"
3. Aturan : aplikasi ini diakses multi user. Jika
salah satu user menggunakan operasi
display, maka user lain masih bisa
menjalankan operasi yang sama (display).
Sedangkan, jika salah satu user
menggunakan operasi insert, edit atau
delete, maka user lain tidak dapat
mengakses (tampilkan pesan : “Record is
edited by another user“).
4. Upayakan tersedianya cara untuk mengatasi
atau mencegah terjadinya deadlock.
5. Tugas ini dikerjakan secara berkelompok (seperti kelompok sebelumnya). Tugas ini juga digunakan sebagai
soal ujian akhir semester matakuliah Sistem Basis Data.
6. Aplikasi yang dihasilkan dipresentasikan : Jadwal I : 19 Desember 2018, Jadwal II : tanggal 26 Desember
2018, Jadwal : III 2 Januari 2019 (jam sesuai dengan jadwal kuliah).