SISTEM BASIS DATA
TRANSAKSI
Transaksi adalah suatu atau beberapa
aksi yang dilakukan program aplikasi untuk mengakses atau mengubah isi basis
data. Transaksi merupakan bagian dari pengeksekusian sebuah program yang
melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian
perubahan data. DBMS yang kita gunakan harus menjamin bahwa setiap transaksi
harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada
transaksi yang hanya dikerjakan sebagaian, karena dapat menyebabkan
inkonsistensi basis data.
Transaksi
bertujuan untuk mencegah dari kehilangan ataupun kerusakan data. Untuk menjamin agar integritas dapat teta terpelihara maka setiap
transaksi harus memiliki 4 Elemen Transaksi: ACID
•
Atomicity: semua berhasil atau semua gagal
•
Consistency: transaksi mempertahankan konsistensi database
•
Isolation: transaksi terisolasi satu dengan yang lain
•
Durability: setelah commit update harus survive di database
OPERSI TRANSAKSI
Dua Operasi Penting Transaksi :
• COMMIT memberi tanda bahwa transaksi telah selesai. Update dibuat permanen
(bahkan jika setelah commit terjadi kegagalan system).
• ROLLBACK memberi tanda bahwa transaksi GAGAL. Semua update harus di-undo.
Mulai praktek, buat table huruf dengan isi tabel seperti di bawah ini
:
SAVEPOINT
Save Point secara sederhana merupakan sebuah titik aman,
dimana kita telah menyelesaiakan satu atau beberapa
transaksi.
Save
point dianalogikan seperti sebuah check
point saat kita bermain game.
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal,
transaksi
tidak berjalan
dari
awal kembali, tetapi dari save poin yang
telah
kita buat.
Untuk membuat sebuah
save point, caranya adalah: SAVEPOINT[nama save point];
Stelah dibuat save pointnya kita dapat rollback ke
save
point tersebut
dengan
cara: ROLLBACK
TO[nama save
point];
coba savepoint caranya
ketikan sql berikut :
Disinilah kita menggunakan perintah rollback, rollback digunakan untuk kembali ke savepoint
kita ketikan sql seperti berikut:
ISOLASI TRANSAKSI
Dalam transaksi database ada 4 hal yang harus dicegah, yaitu:
- Dirty Read
Dapat melihat record yang sudah di rollback transaksi lain atau yang belum dicommit. Kedua transaksi tersebut berjalan bersamaan.
- Non-Repeatable Read
- Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
- Phantom Read : Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Untuk mencegah 3 hal tersebut, maka dalam Oracle terdapat 2 level isolasi yang dapat diimplementasikan, yaitu :
- Read Commited
Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit).
- Serializable
Adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel).LOCKINGJika sebuah transaksi ingin record/resource tidak berubah dalam waktu tertentu maka dia meminta lock.Jenis Lock
- Exclusive Lock (Xlock) => write lock (transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data tersebut).
- Shared Lock (Slock) => read lock (transaksi tersebut hanya bisa melakukan pembacaan).
Untuk shared lock, dapat dimiliki oleh beberapa transaksi dalam satu waktu, namun untuk exclusive lock, hanya dapat dimiliki oleh satu transaksi pada satu waktu.Deadlock
- Situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai.
1301051
Tidak ada komentar:
Posting Komentar