Posted by :
Unknown
Kamis, 01 Mei 2014
IT IS JUST ABOUT TUGAS PRAKTIKUM 6
transaksi adalah sbeuah aktivitas
yang melibatkan dua pihak atau lebih, untuk mempertukarkan sesuatu milik yang
satu dengan sesuatu yang lain, milik pihak lain.
itu adalah Transaksi saja beda dengan Transaksi di dalam Basis Data
Di basis data Transaksi adalah kegiatan yang
menghasilkan suatu data,jelasnya transaksi adalah satu atau beberapa aksi
yang dilakukan sistem aplikasi untuk mengakses atau mengubah isi basis data.
Setiap transaksi harus menunjukan konsistensi basisdata. Pada saat
awal dan akhir program harus tetap konsisten,maka pada saat proses basisdata
akan tetap dalam keadaan konsisten.
Dalam
transaksi kita mengenal commit dan rollback.
- Commit adalah tanda bahwa transaksi sudah selesai dilakukan, atau transaksi yang dilakukan sudah menjadi data.
- Rollback adalah tanda bahwa transaksi gagal dilakukan, artinya transaksi yang diupdate harus diulangi atau di-undo.
Apasih Tujuan Transaksi Itu?
- Singkatnya Melindungi database dari kehilangan data dan kerusakan.
Empat Sifat Dalam Transaksi
- Atomicity
Ini
berarti transaksi harus berhasil secara keseluruhan atau gagal sama sekali
- Consistency
Menjaga
kekonsistenan data di database
- Isolation
Transaksi
yang dimulai secara bersamaan harus bisa dimulai dan bisa berakhir
- Durability
Setelah
transaksi berhasil, data tidak boleh kembali ke data awal walaupun sistem mati
Locking
Protocol
Pada
transaksi database, dikenal istilah locking yang berfungsi untuk menjaga
integritas data. Terdapat dua buah metode locking yaitu :
- Shared Lock (S-LOCK)
Jika
transaksi memiliki shared lock pada suatu data, transaksi tersebut hanya bisa
melakukan pembacaan.
- Exclusive Lock (X-LOCK)
Bagi
transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut
dapat melakukan perubahan dan pembacaan terhadap data tersebut.
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 keadaan wait-state satu sama lain
menunggu lock dilepaskan sebelum di mulai. atau situasi dimana hak akses
bersama semua saling menunggu dimana sumber daya tidak sibuk sedangkan akses
lock terkunci semua.
dan
bagaimana caranya untuk menangani DEADLOCK ?
yaitu
dengan menggunakan isolation , yaitu derajat pengaruh antar transaksi
tertinggi.
Isolation
Transaksi
Dalam
transaksi database, ada 3 hal yang harus dicegah yaitu.
Dirty
Read
Transaksi
membaca data dari hasil transaksi lainnya yang gagal. 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).
Tetapi
aplikasi yang menggunakan level isolasi ini harus bersedia untuk mengulangi
transaksi dikarenakan kegagalan pengserialan transaksi. Saat transaksi berada
pada level serializable, sebuah query SELECT hanya melihat data yang di COMMIT
sebelum transaksi di mulai; transaksi tersebut tidak akan pernah melihat baik
data yang belum di COMMIT atau perubahan data yang terjadi selama eksekusi
transaksi oleh transaksi lain yang berjalan pada waktu bersamaan (e.g. saat
transaksi ini berjalan, ada transaksi lain yang melakukan COMMIT pada data).
Jika pada transaksi dengan level isolaso Serializable mengandung DML (Data
Manipulatin Language) yang mencoba untuk meng-update suatu data yang mungkin
sudah di update pada sebuah transaksi yang belum di commit pada awal transaksi
Serializable, maka perintah DML tersebut akan gagal.
Untuk
mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah
:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Isolai
level ini mencegah terjadinya Phantom Read.
Kita Coba Praktekin yuk ini dia tarraaaaa~
- Buat Database nya dulu
1 |
2 |
- Show Table 2
- Setelah di commit di table 1 maka
commit di table 1 |
show table 2 |
Nah setelah commit kita akan mencoba Savepoint dan rollback
- Data akan hilang kan bagaimana kita nge load data nya kembali?? ini dia caranya
Maka
untuk melakukan rollback terlebih dahulu kita harus menyimpan history transaksi
yang pernah kita lakukan yaitu dengan membuat savepoint, dimana savepoint
merupakan sebuah titik aman, dimana kita telah menyelesaiakan satu atau
beberapa transaksi. Jadi ketika kita akan me- rollback sebuah transaksi maka
savepoint ini akan menjadi tujuan rollback yang akan dilakukan.
Hahahaha Ditutup dengan praktek barusan maka bereslah Postingan TP6 kali ini... :D