Transaksi dalam Sistem Basis Data
Udah lama yaa gak ngepost, seperti
biasa blog ini kayanya ditakdirkan harus ngepost kalo dapet tugas ngeresume
doang heheh ...:v TAPI semoga bisa bermanfaat yaa ^^
Kali ini RESUME yang KE-2 untuk PRAKTIKUM Sistem Basis
Data, resume pertama kan mengenai pengenalan dan instalasinya kali ini akan
membahas mengenai TRANSAKSI mba broo
J
Apa hayo transaksi? Hmmm apa apa
apa? Proses jual beli antara penjual dan pembeli? Hmm tapi bukan transaksi yang
itu yaa..
Ini transaksi dalam Sistem Basis Data, okedeeh dikasihh tauu
deeeh :D tadaaaaammm...
Transaksi adalah suatu aksi yang
dilakukan oleh program bertujuan untuk mengakses atau mengubah data yang
terdapat di database. Transaksi dapat juga diartikan sebagai satu atomic
operasi berupa unit lojik pekerjaan, unit lojik recovery yang bisa terdiri dari
beberapa intruksi yang dilakukan untuk mengakses dan mengubah isi data.
(*ngerti gaaak? Klo gak baca, hayati, resapi aja berulang-ulang sampe bisa
nempel di otak dan gak mendal lagi tuh pengertiaannya :D #peace)
Transaksi yang berlangsung
tersebut, hanya mengenal dua hasil, yaitu berhasil secara keseluruhan,
atau gagal sama sekali. Transaksi tersebut berarti tidak boleh berhasil
setengah-setengah, harus berhasil secara keseluruhan. (*transaksi tuh
gak galau kaya kalian-kalian klo iya ya iya, jangan iya iya ngga ngga. Kan gak
enak digantungin gitu #apabangetini #salahfokus).
Dengan kata lain Transaksi adalah
konsep fundamental dari system database. Inti dari transaksi adalah membundel
operasi-operasi kedalam sebuah atau tidak sama sekali operasi.
Tujuan dari transaksi tersebut
adalah untuk mencegah database dari kehilangan atau kerusakan data. (*gak
tanggung jawab klo kerusakan hati mah).
Untuk menjamin integritas data,
maka setiap transaksi harus memiliki sifat-sifat :
1. Atomik (Atomicity) :
semua operasi-operasi di dalam transaksi tersebut dapat di kerjakan seluruhnya
atau tidak sama sekali. (dari pak Yudi Wibisono : semua berhasil atau semua gagal)
2. Konsistensi
(Consistency): eksekusi transaksi secara tunggal harus dapat menjamin data
tetap konsisten setelah transaksi berakhir. (dari pak Yudi Wibisono : transaksi mempertahankan konsistensi database)
3. Terisolasi
(Isolation): jika pada sebuah sistem basisdata terdapat sejumlah transaksi
yang dilaksanakan secara bersamaan, maka semua transaksi-transaksi yang
dilaksanakan pada saat bersamaan tersebut tidak mempengaruhi satu sama
lain. (dari pak Yudi Wibisono : transaksi
terisolasi satu dengan yang lain)
4. Bertahan
(Durability): dimana perubahan data yang terjadi setelah sebuah transaksi
berakhir dengan baik, harus dapat bertahan bahkan jika seandainya terjadi
kegagalan system. (dari pak Yudi Wibisono : setelah commit, update harus
survive di database).
Biar temen-temen hafalinnya gampang maka sifat-sifat tadi biasanya disingkat menjadi ACID.
OPERASI TRANSAKSI PADA ORACLE
Pada transaksi, terdapat dua buah operasi yang berfungi untuk
menjaga integritas data dan ketahana data, yaitu commit dan rollback.
·
Commit berfungsi untuk menandakan bahwa transaksi
telah selesai dilaksanakan.
· Rollback berfungsi untuk member tahu bahwa transaksi harus diulang karena ada
suatu kegagalan.
Biar paham mengenai
transaksi mari kita coba penerapan Commit dan Rollback yaa..
Yooo
yoo yoo semangat ngoding, ayo dibuka notepadnya...
--membuat tabel dicoba
create table dicoba(
id_coba number PRIMARY KEY,
nama varchar(20) not null
);
--Buat sequence
CREATE SEQUENCE seq_idcoba increment by 1;
--Masukkan Data dicoba
insert into dicoba values (seq_idcoba.nextval,'A');
insert into dicoba values (seq_idcoba.nextval,'B');
insert into dicoba values (seq_idcoba.nextval,'C');
insert into dicoba values (seq_idcoba.nextval,'D');
insert into dicoba values (seq_idcoba.nextval,'E');
Setelah
itu buka dua buah jendela SQL Command Line. Pastikan dengan warna latar yang
berbeda.
Setelah itu kamu pastikan keduanya login dengan user yang
sama, misalkan usernya itu praktikum1. Kalau syuuuuudah, kita tampilkan dulu
data yang tadi kita buat sebelumnya dikedua SQL Command Line tersebut.
Tampilan diatas belum ada perbedaannya kan, sekarang kita
masukan data di SQL Command Line yang latarnya warna hitam.
insert into dicoba values (seq_idcoba.nextval,'F');
Kalau sudah isi datanya kita tampilkan data yang ada di
table tersebut di SQL Command Line yang
berlatar hitam dan putih.
Nah loh,
terlihat ada perbedaan diantara keduanya
yaah? Pada Command Line berlatar hitam, data telah bertambah satu, sedangkan
pada Command Line berlatar putih data belum bertambah sama sekali.
Waaah kenapa
hayoo kenapaa hayoooo?? Jawabannya adalah
karena transaksi memasukkan data pada Command
Line berlatar hitam belum sepenuhnya berakhir. Untuk menandakan bahwa
proses memasukkan data tersebut telah berakhir dan sukses, maka kita perlu
menyatakan bahwa transaksi tersebut telah commit.
Caranya begini niih, lakukan pada Command Line berlatar hitam
yaaaaa.
Naaah sekarang sudah di-commit qaqa, maka data antara Command Line berlatar hitam dan putih sudah menjadi
sama.
yayaya setelah belajar COMMIT kita belajaaarrr >>>>>>>>>>
SAVE POINT
Hayo loh ada yang tahu engga apa yang dimaksud dengan save
point? 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];
Setelah dibuat save pointnya kita dapat rollback ke save
point tersebut dengan cara :
ROLLBACK TO[nama save point];
ISOLASI TRANSAKSI
ada tiga hal yang harus di cegah,
yaitu:
1. Dirty Read, Transaksi membaca data dari
hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan
bersamaan.
2. Non-Repeteable Read, Transaksi membaca ulang data
yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh
transaksi lainnya.
3. Phantom Read, Transaksi membaca sebuah data
yang telah hilang akibat dari transaksi yang lainnya.
dan untuk mencegahnya terdapat dua level isolasi, yaitu:
1. Read Commited, Transaksi hanya dapat melihat
perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti
dalam contoh commit).
2. 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). Untuk mengaplikasikan level isolasi Serializable,
adalah dengan menggunakan perintah :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Isolai level ini mencegah terjadinya Phantom
Read.
LOCKING PROTOCOL
Dikenal dengan istilah locking yang berfungsi menjaga integritas data. ada
dua metode locking, yaitu:
1. Shared Lock (S-LOCK), Jika
transaksi memiliki shared lock pada suatu data, transaksi tersebut hanya bisa
melakukan pembacaan.
2. Exclusive Lock (X-LOCK), Bagi
transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut
dapat melakukan perubahan dan pembacaan terhadap data tersebut.
PENGUNCIAN LEVEL TABEL
Penguncian yang berfungsi untuk mengunci suatu tabel untuk mencegah perubahan
atau penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut.
cara penguncian tabelnya, sebagai berikut: LOCK TABLE [nama tabel];
PENGUNCIAN LEVEL BARIS
Penguncian yang dilakukan pada baris (ROW) yang sedang digunakan oleh suatu
transaksi sampai transaksi tersebut selesai dilakukan. Penguncian level baris
hanya berlaku untuk operasi UPDATE dan DELETE.
DEADLOCK
Merupakan situasi dimana dua atau lebih transaksi dalam kondisi wait-state,
satu sama lain menunggu Lock dilepas sebelum di mulai (Yudi Wibisono).
Oke mungkin segitu saja pemirsah yang bisa saya bagikan hehehe, semoga
bermanfaat dan menambah ilmu buat teman-teman,
***cukup sekian dan
TERIMA GAJIH !!! ^^***
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Isolai level ini mencegah terjadinya Phantom Read.
Mantap ka, mudah dimengerti. Terima kasih ^^
ReplyDelete