manajemen transaksi basisdata -...

28
MANAJEMEN TRANSAKSI BASISDATA 1 Part #2

Upload: trandat

Post on 02-May-2019

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

MANAJEMEN TRANSAKSI BASISDATA

1

Part #2

Page 2: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 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

Page 3: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

3

Hasil Operasi Read No conflict Write Conflict

Page 4: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 5: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 6: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 7: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

7

Page 8: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

8

Lock Tingkat Tabel

Page 9: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

9

Lock Tingkat Baris

Page 10: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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 :

Page 11: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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 :

Page 12: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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'");

Page 13: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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')");

Page 14: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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

Page 15: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

15

Kontrol Konkurensi dengan Metode Locking

Page 16: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

16

Kontrol Konkurensi dengan Metode Locking

locking terhadap tabel

Contoh 1

Page 17: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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

Page 18: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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

Page 19: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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

Page 20: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 21: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

21

Protokol Two Phase Locking (2PL)

Two Phase Locking (2PL) dapat membantu mencegah masalah : Lost Update Uncommitted Data unconsistent Retriveals

Page 22: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 23: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

23

Proses Terjadinya Deadlock

Pemodelan deadlock

Page 24: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 25: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 26: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

26

Skema Wait/ Die & Wound/ Wait

Page 27: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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.

Page 28: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#2_ind.pdftransaksi basisdata 1 part #2 . 2

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