MANAJEMEN TRANSAKSI BASISDATA -...
Transcript of MANAJEMEN TRANSAKSI BASISDATA -...
MANAJEMEN TRANSAKSI BASISDATA
1
Konsep Transaksi
State Transaksi
Implementasi Atomik dan Durabilitas
Eksekusi Konkuren
Serializability
Recoverability
Implementasi Isolasi
Definisi Transaksi di SQL
Tes Serializability
2
Transaksi Dalam istilah database, adalah “aksi membaca dari atau menulis ke database”.
Transaksi adalah pekerjaan yang harus sepenuhnya diselesaikan atau dibatalkan. Transaksi yang berhasil tetap menghasilkan kondisi database yang konsisten (dimana semua batasan integritas data terpenuhi).
Transaksi dapat mencakup:
o Pernyataan SELECT untuk menampilkan isi tabel o Pernyataan UPDATE untuk mengubah nilai atribut dalam tabel o Pernyataan INSERT untuk menambah baris ke 1 atau lebih tabel o Kombinasi dari pernyataan SELECT, UPDATE, & INSERT
Transaksi terdiri dari semua operasi yang dieksekusi diantara begin transaction dan end transaction (pada Oracle).
3
4
ANSI (The American National Standards Institute) mendefinisikan standar
yang mengawal transaksi database SQL.
Standar tersebut menyebutkan ketika serangkaian transaksi diberikan oleh
user atau program aplikasi, maka urutan tersebut harus dieksekusi terus
sampai salah satu dari 4 kejadian berikut ini muncul :
1. Adanya pernyataan COMMIT yang mengakhiri transaksi SQL.
2. Adanya pernyataan ROLLBACK yang membatalkan semua perubahan &
database dikembalikan ke kondisi konsisten sebelumnya.
3. Akhir dari program tercapai dimana semua perubahan tersimpan dalam
database (sama dengan COMMIT).
4. Program diberhentikan dimana semua perubahan dibatalkan & database
dikembalikan ke kondisi konsisten sebelumnya (sama dengan
ROLLBACK).
5
Atomicity: Semua operasi (permintaan SQL) dari transaksi harus diselesaikan; jika tidak maka transaksi dibatalkan.
Consistency: Ketika transaksi diselesaikan, database harus dalam kondisi konsisten; jika ada bagian transaksi yang melanggar batasan integritas maka seluruh transaksi dibatalkan.
Isolation: Data yang digunakan selama eksekusi transaksi tidak dapat digunakan oleh transaksi kedua
sampai transaksi pertama selesai. Berguna dalam database multiuser karena beberapa user dapat mengakses & mengupdate database pada waktu yang sama.
Durability: Memastikan bahwa ketika perubahan transaksi dilakukan & dicommit, maka tidak dapat dibatalkan atau dihilangkan, bahkan ketika terjadi kegagalan sistem.
Serializability: Memastikan bahwa jadwal untuk eksekusi konkurensi dari transaksi menghasilkan hasil
yang konsisten. Penting dalam database multiuser & terdistribusi dimana terdapat beberapa transaksi yang dieksekusi sekaligus.
Secara default, skenario transaksi adalah Auto Commit, yaitu semua proses yang berhasil dilaksanakan akan secara otomatis disimpan dalam database secara fisik .
Jika diinginkan mulai dari posisi tertentu Auto Commit tidak berfungsi, dapat gunakan perintah Start Transaction (pada Mysql)
Seluruh perintah setelah Start Transaction akan ditunda untuk disimpan, sampai bertemu pernyataan Commit yang akan menyimpan seluruh proses yang tertunda.
6
Seluruh perintah setelah Start Transaction akan ditunda untuk disimpan, sampai bertemu pernyataan Rollback yang akan membatalkan seluruh proses yang tertunda.
Perintah berikut tidak dapat di rollback, karena mengandung
fungsi commit secara implisit : Alter Table Create Index / Table / Database Drop Index / Table / Database Loack / Unlock Tables Start Transaction
7
8
Pada saat eksekusi transaksi, database bisa saja menjadi tidak
konsisten. Namun pada saat transaksi sampai pada level commit,
maka databasenya harus konsisten.
Dua hal utama yang mungkin akan dihadapi pada saat melakukan
transaksi :
Terjadinya berbagai macam kegagalan, yang bisa disebabkan
karena kegagalan hardware, system crash, dll
Eksekusi konkuren (secara bersama) yang melibatkan banyak
transaksi
9
10
DBMS menggunakan log transaksi untuk menelusuri
semua transaksi yang mengupdate database. DBMS menggunakan informasi yang tersimpan dalam
log ini untuk pemulihan yang dipicu oleh perintah ROLLBACK, program diberhentikan, atau kegagalan sistem seperti terputusnya jaringan atau system crash.
11
Record untuk awal transaksi. Untuk tiap komponen transaksi (pernyataan SQL): Jenis operasi yang dijalankan (INSERT, UPDATE, DELETE). Nama objek yang dipengaruhi oleh transaksi (nama tabel). Nilai sebelum & sesudah untuk field yang diupdate. Pointer ke entri log transaksi sebelumnya & selanjutnya
untuk transaksi yang sama. Akhir dari transaksi (COMMIT).
Walaupun penggunaan log transaksi meningkatkan overhead pemrosesan dari DBMS, tetapi sebanding dengan kemampuannya untuk memulihkan database yang korup.
Log transaksi menyimpan :
12
13
Kontrol Konkurensi
Kontrol konkurensi adalah pengaturan dari eksekusi transaksi yang berkelanjutan dalam sistem database multiuser.
Tujuan dari kontrol konkurensi adalah untuk
memastikan serializability dari transaksi dalam lingkungan multiuser.
Tiga masalah utama: lost updates, uncommitted data,
& inconsistent retrievals.
14
Kontrol Konkurensi
Muncul ketika 2 transaksi konkuren, T1 & T2 mengupdate elemen data yang sama & salah satu update hilang (ditimpa oleh transaksi lain).
Contoh ilustrasi pada tabel PRODUCT: Asumsikan nilai produk (PROD_QOH) adalah 35. Terdapat 2 transaksi, T1 & T2, muncul & mengupdate nilai PROD_QOH. T1 menambah 100 unit sementara T2 mengurangi 30 unit ke nilai PROD_QOH.
Lost Updates
15
Kontrol Konkurensi
Lost Updates
16
Kontrol Konkurensi
Uncommitted Data
Muncul ketika 2 transaksi, T1 & T2, dieksekusi secara
bersamaan & transaksi pertama (T1) dikembalikan
setelah transaksi kedua (T2) mengakses data yang tidak
dicommit – sehingga melanggar properti isolation dari
transaksi.
Transaksi mengakses data dengan operasi :
read(X), mentransfer data item X dari database ke local buffer yang dimiliki oleh transaksi
yang mengeksekusi operasi pembacaan (read).
write(X), mentransfer data item X dari local buffer dari aksi transaksi yang mengeksekusi
perintah penulisan kembali ke database (write)
17
Kontrol Konkurensi
Uncommitted Data
18
Kontrol Konkurensi
Inconsistent Retrievals
Muncul ketika transaksi mengakses data sebelum & sesudah 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh : jika transaksi TI menghitung fungsi summary (aggregate) pada serangkaian data sementara transaksi lain (T2) mengupdate data yang sama. Masalahnya transaksi mungkin membaca beberapa data sebelum diubah & beberapa data setelah diubah, sehingga menghasilkan hasil yang salah.
19
Kontrol Konkurensi
Inconsistent Retrievals
20
Tugas Praktikum
Tugas ini dikerjakan secara bekelompok. a. Mempraktekan masalah-masalah utama pada kontrol konkurensi : lost updates, uncommitted data, & inconsistent retrievals. b. Setelah database server MySQL Saudara sudah dapat diakses dari beberapa klien, buatlah database dan beberapa tabel pada database tersebut. (database dan tabel-tabel terserah Saudara). c. Buatlah user dengan access privileges tertentu sehingga database tersebut dapat diakses dari klien-klien (anggota kelompok Saudara yang lain). d. Lakukan beberapa transaksi dengan mengacu pada contoh-contoh transaksi di atas (lost updates, uncommitted data, & inconsistent retrievals). e. Buatlah laporan yang berisi catatan-catatan dari kejadian-kejadian (masalah-masalah) yang muncul dari transaksi-transaksi tersebut dan langkah untuk menyelesaikannya. Didalam laporan ditampilkan hasil dari screenshot dari kejadian / masalah yang muncul dan cara mengatasinya. f. Laporan dicetak dan dikumpulkan paling lambat Hari Senin, 4 Desember 2017.