Transaksi
A. Apa itu transaksi ?
Transaksi adalah kejadian yang menghasilkan
sebuah data. Lalu apakah data itu? Data adalah representasi fakta dunia nyata
dalam bentuk angka, suara, gambar, dsb. Transaksi bertujuan untuk melindungi
database dari kehilangan data. Proses dari transaksi itu 2, commit atau
rollback.
Commit menandakan bahwa transaksi telah
selesai dilaksanakan.
Rollback berfungsi untuk mengulang kembali
transaksi karena adanya suatu kegagalan.
Elemen dari transaksi terbagi menjadi 4
macam, yaitu :
a. Atomicity : kejadian harus pasti, semua kejadian berhasil
atau tidak sama sekali.
b. Consistency
: transaksi mempertahankan konsistensi database.
c. Isolation : transaksi terisolasi satu dengan yang lain.
d. Durability : setelah commit update harus survive di database.
B. Save point
Save point sama halnya dengan check point
ketika kita sedang bermain game. Fungsinya adalah sebagai penanda/tempat jika
kita ingin mengulang kembali transaksi. Save point berhubungan dengan
integritas data. Apa itu integritas data? Integritas data adalah akurasi dan
kebenaran data. Integritas data berguna untuk menyaring dan membuat aturan di
dalam database, agar data yang tidak valid tidak masuk ke dalam database.
C. Isolasition Level
Isolasi level dibagi menjadi 3 macam, yaitu
:
a. Dirty Reads
Sebuah transaksi membaca data yang telah di tulis oleh transaksi yang
lain tetapi belum di commit oleh transaksi lain tersebut.
b. Non Repeatable Reads
Sebuah transaksi yang membaca kembali sebuah data dimana data tersebut
sudah di rubah / di hapus oleh transaksi lain dan telah di commit.
c. Phantom Reads
Sebuah
transaksi menjalankan kembali sebuah query dimana akan menemukan bahwa ada
transaksi lain yang telah memasukkan record baru ke schema yang sedang di akses
oleh transaksi tersebut, sehingga akan terlihat antara query yang pertama di
lakukan dengan query yang kedua memberikan hasil eksekusi jumlah row yang
berbeda .
Bagaimana cara penyelesaiannya? Oracle
memberikan 2 mode isolasi, yaitu :
a. Read Commited
Transaksi hanya melihat perubahan data setelah di commit.
b. Serializable, Transaksi serializable membaca
hanya perubahan yang telah dicommit pada saat transaksi dimulai, ditambah
perubahan yang dibuat oleh transaksi itu sendiri melalui statemen insert,
update, dan delete.
D. Locking
Dalam mengatur transaksi, dilakukan sebuah
locking. Locking berfungsi agar tidak ada transaksi yang saling mengganggu. Ada
2 mode lock yang terdapat dalam oracle, yaitu :
a. Exclusive Lock (Write)
User dapat melakukan pembacaan dan juga pengubahan data.
b. Share Lock (Read)
User
hanya bisa melakukan proses pembacaan.
Jika
ada dua lock, atau dua hak akses write, maka akan terjadi deadlock. Deadlock adalah
kondisi saling menunggu (wait-state). Salah satu solusinya adalah di lepaskan
salah satu hak aksesnya. Baru kita bisa menggunakan hak yang lainnya. Contoh real
dari deadlock adalah ketika dalam 2 jam pelajaran akan diisi oleh 2 mata
pelajaran sekaligus.