Transaksi
Transaksi
dalam basis data adalah program atau bagian yang didalam pelaksanaanya akan
mengakses atau mengubah data yang berada pada database. Tujuan dari transaksi
adalah melindungi data dari kehilangan atau kerusakan.
Transaksi
yang berlangsung hanya mengenal dua hasil, yaitu berhasil secara keseluruhan
atau gagal secara keseluruhan.
Terdapat dua
operasi penting dalam transaksi yaitu commit dan rollback. Commit menandakan
bahwa transaksi sudah berhasil dan akan dimasukkan kedalam database. Rollback
menandakan bahwa transaksi gagal dan data tidak akan dimasukkan kedalam
database.
Transaksi
memiliki 4 elemen :
1.
Atomicity
Transaksi harus berhasil secara keseluruhan atau transaksi digagalkan
2.
Consistency
Transaksi yang dilakukan mempertahankan konsistensi dari database
3.
Isolation
Transaksi terisolasi antara satu transaksi dan transaksi lainnya
4.
Durability
Transaksi yang sudah berhasil tidak boleh dikembalikan ke data awal
kecuali terdapat update dari sistem
Dalam sebuah
sistem database. Transaksi yang dilakukan bisa lebih dari dua transaksi secara
bersamaan. Dengan banyaknya transaksi yang dilakukan secara bersamaan timbul
beberapa masalah. Masalah-masalah tersebut dapat diatasi dengan concurreny.
Concurrency
Concurreny
adalah proses pengaturan transaksi-transaksi yang dilakukan secara bersamaan
dan tidak saling mengganggu sehingga menghasilkan data yang konsisten. Terdapat
beberapa masalah yang berkaitan dengan concurrency yaitu:
1.
Lost
Update
Masalah lost update terjadi apabila terdapat dua atau lebih transaksi yang
sedang melakukan update sebuah data secara bersamaan. Ketika transaksi pertama
selesai melakukan update lalu transaksi kedua melakukan update, yang
menyebabkan update transaksi pertama menjadi tidak terbaca hanya update
transaksi kedua. Hal tersebut biasa disebut dengan lost update
2.
Uncommited
Dependency (Dirty Read)
Apabila terdapat transaksi yang mengubah nilai sebuah data, lalu
transaksi tersebut merollback kembali perubahan data yang dilakukan. Disisi
lain terdapat transaksi yang sudah mengambil data yang telah berubah. Hal ini
biasa disebut dengan dirty read.
3.
Inconsistent
Analysis
Apabila terdapat dua atau lebih transaksi yang mengakses beberapa data,
ketika sebuah transaksi menggunakan sebuah data lalu data yang digunakan
dirubah oleh transaksi lain, sedangkan transaksi yang sudah digunakan masih
membaca data sebelum data dirubah.
Untuk
mengatasi masalah diatas muncullah yang dikenal dengan locking. Locking
ditujukan apabila ingin data tidak bisa dirubah dalam waktu tertentu .Locking
terdiri dari dua buah lock.
·
Exclusive
Lock(XLOCK)
XLOCK digunakan untuk mengunci data agar hanya bisa diubah oleh yang
sedang memiliki XLOCK tersebut.
·
Shared
Lock(SLOCK)
SLOCK digunakan untuk mengambil data namun yang bisa mengambil data hanya
yang sedang memiliki SLOCK tersebut.
Terdapat
permasalahan lain yang ditimbulkan dari locking sendiri yaitu deadlock.
Deadlock yaitu suatu keadaan dimana dua atau lebih transaksi menunggu lock yang
sedang dipegang oleh masing-masing transaksi. Sehingga proses akan terus
menunggu hingga terdapat transaksi yang dirollback.
Referensi
Tidak ada komentar:
Posting Komentar