Makalah
disusun untuk memenuhi tugas mata kuliah Basis Data
Dosen Pengampu
Nava Gia Ginasta, S. Tr. Kom., M. Kom.
Oleh:
Mylo Aleffa Rahman (NPM 184220010)
Muhammad Reefy Hidayatullah (NPM 184220015)
Yusuf (NPM 184220032)
Puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan
hidayah-Nya sehingga penulis dapat menyelesaikan tugas makalah yang berjudul
“Manajemen Transaksi pada Database” ini tepat pada waktunya. Adapun tujuan
penulisan dari makalah ini adalah sebagai pemenuhan tugas Mata Kuliah Basis Data.
Selain itu, makalah ini juga bertujuan untuk menambah wawasan tentang manajemen
transaksi yang terdapat dalam database bagi para pembaca dan juga bagi penulis
sendiri. Penulis mengucapkan terima kasih kepada Bapak Nava Gia Ginasta, S. Tr.
Kom., M. Kom. selaku dosen pengampu Mata Kuliah Basis Data yang telah
membimbing penulis sehingga dapat menambah pengetahuan dan wawasan. Penulis
menyadari makalah ini masih jauh dari kata sempurna. Oleh karena itu, kritik dan
saran yang membangun akan penulis nantikan demi kesempurnaan makalah ini.
ii
DAFTAR ISI
BAB I ............................................................................................................................ 1
BAB II ........................................................................................................................... 4
LAMPIRAN I ............................................................................................................. 21
LAMPIRAN II ............................................................................................................ 24
iii
DAFTAR GAMBAR
iv
BAB I
PENDAHULUAN
1
2
memastikan bahwa keamanan data terjaga dan juga transaksi dapat berjalan tanpa
hambatan apapun.
Melihat perkembangan teknologi pada masa kini, berbagai konsep yang ada
dalam manajemen transaksi juga berkembang pesat seiring dengan peningkatan
kompleksitas sistem dan kebutuhan akan ketersediaan data secara real time. Berbagai
konsep seperti transaksi terdistribusi, replikasi data, dan teknik-teknik pengoptimalan
kinerja menjadi bagian yang penting dalam memahami bagaimana manajemen
transaksi dapat disesuaikan dengan lingkungan basis data yang beragam.
Dengan mempertimbangkan latar belakang tersebut, diharapkan makalah ini
dapat memberikan gambaran yang komprehensif tentang manajemen transaksi pada
database, termasuk pengertian, properti, fungsi, dan contoh penerapannya untuk
pengembangan dan perbaikan di masa mendatang.
1.2 Rumusan Masalah
1. Apa itu transaksi pada database?
2. Apa saja properti transaksi database?
3. Apa saja fungsi yang ada pada transaksi MySQL?
4. Apa itu isolation level pada transaksi?
1.3 Tujuan Penulisan
1. Menjelaskan pengertian dari transaksi pada database.
2. Memaparkan properti transaksi pada database.
3. Menjelaskan fungsi-fungsi yang ada pada transaksi database.
4. Memaparkan penjelasan tentang isolation level.
1.4 Manfaat Penulisan
Penulisan makalah ini akan memberikan manfaat dalam meningkatkan
wawasan terkait manajemen transaksi pada database. Dalam analisis yang tertera,
akan menjelaskan bagaimana manajemen transaksi berperan menjaga keandalan
sistem basis data. Dengan pemahaman yang baik mengenai konsep ACID (Atomicity,
Consistency, Isolation, Durability). Makalah ini juga memberikan berbagai contoh
penerapan transaksi pada database yang biasa digunakan.
3
Penulisan makalah ini juga diharapkan dapat menjadi referensi bagi peneliti
selanjutnya yang tertarik lebih dalam mengenai manajemen transaksi pada database.
Melalui analisis yang mendalam dan informasi yang terdokumentasi dengan baik,
penulisan ini menjadi sumber referensi berharga bagi peneliti dan akademisi yang
ingin melanjutkan penelitian sejenis di masa mendatang.
BAB II
PEMBAHASAN
4
5
a. Transaction Failure
Transaction failure merupakan kegagalan yang diakibatkan oleh suatu
transaksi yang diinput tidak bisa lagi dilanjutkan atau transaksi tersebut tidak
bisa lagi dikelola. Hal ini bisa diakibatkan oleh logical error maupun system
error.
b. System Crash
System Crash merupakan sebuah kegagalan sistem yang terganggu oleh faktor
eksternal seperti terjadinya error pada operating system.
c. Disk Failure
Disk Failure merupakan sebuah kegagalan transaksi yang berasal dari
rusaknya hard drive dalam penampungan penyimpanan data untuk kegunaan
akses data atau processing.
Jika basis data pada awalnya dalam keadaan konsisten, maka pelaksanaan
transaksi dengan sendirinya juga harus meninggalkan basis data tetap dalam
status konsisten. Jika transaksi melanggar integritas data atau aturan bisnis,
maka transaksi tersebut harus diabaikan atau dibatalkan untuk menjaga
konsistensi.
c. Isolation
Isolasi mengacu pada tingkat terisolasi atau terpisahnya satu transaksi dengan
yang lainnya yang sedang diproses secara bersamaan, transaksi yang sedang
berjalan tidak boleh saling mengganggu satu sama lain, isolasi dapat
diimplementasikan menggunakan teknik seperti locking untuk menghindari
anomali.
d. Durability
Setelah transaksi dilakukan, maka perubahan yang diakibatkan tidak akan
hilang atau bertahan lama, sekalipun adanya kegagalan sistem, durability
biasanya dicapai dengan menyimpan perubahan ke penyimpanan persisten
seperti disk.
7
(Sumber: https://repository.unikom.ac.id/65140/)
rollback;
d. SAVEPOINT
Savepoint merupakan sintaks untuk membuat titik pada kondisi tertentu dalam
transaksi sehingga ketika di-rollback, tabel tidak kembali ke kondisi awal,
melainkan ke kondisi dimana savepoint dibuat. Untuk membuat savepoint
pada transaksi, kita cukup menulis sintaks savepoint nama_savepoint;.
Untuk mengembalikan data ke kondisi sebelum savepoint, sintaksnya adalah
sebagai berikut.
rollback to nama_savepoint;
Dalam transaksi pada database, terdapat 4 isolation level atau tingkat isolasi
dengan kelebihan dan anomali masing-masing, diantaranya adalah:
10
a. READ-UNCOMMITTED
Read-uncommitted merupakan tingkat paling rendah diantara isolation level
lainnya. Pada tingkatan ini, user lain dapat mengakses dan mengubah data
yang sedang diproses meskipun belum di-commit sehingga tidak menutup
kemungkinan terjadinya dirty read, non-repeatable read maupun phantom
read. Untuk mengubah tingkat isolasi pada suatu sesi di MySQL menjadi
read-uncommitted, gunakan sintaks berikut.
set session tx_isolation=’read-uncommitted’;
Dari contoh tersebut, dapat dilihat bahwa meskipun pada sesi pertama transaksi
belum di-commit, perubahan yang dilakukan pada transaksi dapat dilihat oleh user
pada sesi kedua.
b. READ-COMMITTED
Read-committed merupakan tingkat isolasi yang lebih tinggi dibanding read-
uncommitted dimana user lain hanya dapat mengakses data yang sudah di-
commit. Isolation level ini menanggulangi anomali dirty read pada isolation
level sebelumnya. Untuk mengubah tingkat isolasi pada suatu sesi di MySQL
menjadi read-committed, gunakan sintaks berikut.
set session tx_isolation=’read-committed’;
Dari contoh tersebut, dapat dilihat bahwa sesi sesi kedua tidak dapat melihat
perubahan transaksi yang belum di-commit pada sesi pertama.
c. REPEATABLE-READ
Repeatable-read merupakan tingkat isolasi dimana tiap user tidak dapat
melihat perubahan yang dilakukan oleh user lainnya dan merupakan tingkat
isolasi default pada MySQL. Pada repeatable-read, user pada sesi lain tidak
dapat melihat perubahan yang sudah dilakukan meskipun sudah di-commit.
13
Hal ini menanggulangi anomali pada tingkat sebelumnya yaitu adanya non-
repeatable read. Untuk mengubah tingkat isolasi pada suatu sesi di MySQL
menjadi repeatable-read, gunakan sintaks berikut.
set session tx_isolation=’repeatable-read’;
Pada contoh tersebut, dapat dilihat bahwa output pada sesi kedua tidak
berubah meskipun perubahan sudah di-commit pada sesi pertama. Namun, hal
tersebut tidak menutup kemungkinan terjadinya phantom read seperti contoh di
bawah.
15
Pada contoh di atas, data nasabah dengan no_rek 6 dapat dimanipulasi oleh user
pada sesi 2 meskipun sebelumnya data tersebut tidak ada dalam sesi 2.
d. SERIALIZABLE
Serializable merupakan tingkat isolasi tertinggi diantara tingkat isolasi
lainnya. Pada tingkat isolasi ini, user lain tidak dapat memodifikasi data yang
sedang kita akses dalam transaksi hingga transaksi selesai. Untuk mengubah
tingkat isolasi pada suatu sesi di MySQL menjadi serializable, gunakan
sintaks berikut.
set session tx_isolation=’serializable’;
16
Pada contoh di atas, sesi satu mengakses data dengan no_rek 6. Dikarenakan
sesi 1 sedang mengakses data tersebut, sesi 2 harus menunggu hingga sesi 1
menyelesaikan transaksi. Namun, jika terlalu lama, transaksi akan error dan dapat
diakses pada sesi 2 seperti pada gambar 2.15.
BAB III
PENUTUP
3.1 Kesimpulan
Dengan mengadopsi properti-properti ACID, transaksi pada database dapat
dianggap sebagai langkah yang kritis dalam memastikan integritas dan keandalan
data. Aspek atomik menjamin bahwa setiap transaksi dijalankan sebagai satu
kesatuan yang utuh, memberikan keyakinan bahwa seluruh operasi berhasil atau tidak
ada yang dijalankan sama sekali. Konsistensi memastikan bahwa pelaksanaan
transaksi tidak merusak integritas data atau aturan bisnis yang telah ditetapkan
sebelumnya. Terisolasi menjamin bahwa transaksi berjalan tanpa saling mengganggu
satu sama lain, mencegah anomali dan konflik antara transaksi yang bersamaan.
Terakhir, dengan menjaga durabilitas, perubahan yang terjadi akibat transaksi akan
tetap ada dan stabil, bahkan dalam kondisi kegagalan sistem.
3.2 Saran
Disarankan untuk mempelajari lebih dalam mengenai transaksi pada database
dengan menerapkan praktik terbaik dalam pengelolaan transaksi. Perlunya
meningkatkan inovasi yang ada untuk mendukung terhadap penelitian dan
pengembangan yang mengarah pada perbaikan teknologi, efisiensi, dan keamanan
transaksi akan memainkan peran kunci untuk memenuhi tuntutan di masa mendatang.
17
18
19
20
PRAKTIKUM
a. COMMIT
Misalnya terdapat tabel yang berisi data tabungan nasabah. Seorang nasabah
bernama Asep ingin mengirim uang sebesar 200 kepada Agus melalui ATM.
Proses yang terjadi pada database adalah sebagai berikut.
start transaction;
update nasabah set saldo = saldo-200 where no_rek=1;
update nasabah set saldo = saldo+200 where no_rek=2;
Jika pada akhir transaksi tidak kita masukkan perintah commit, maka hasil
yang ditampilkan hanya hasil sementara. Jika sesi dihentikan lalu tabel
ditampilkan, maka tidak akan terjadi perubahan pada tabel.
start transaction;
update nasabah set saldo = saldo-200 where no_rek=1;
update nasabah set saldo = saldo+200 where no_rek=2;
commit;
select * from nasabah;
Output dari kodingan di atas adalah sebagai berikut.
21
22
b. ROLLBACK
start transaction;
insert into nasabah (nama,saldo) values (‘Suryo’,650);
delete from nasabah where no_rek=1;
rollback;
select * from nasabah;
c. SAVEPOINT
start transaction;
insert into nasabah (nama,saldo) values (‘Suryo’,650);
update nasabah set saldo = saldo-300 where no_rek=2;
savepoint s1;
delete nasabah where no_rek=1;
23
Dari hasil output di atas, hasil yang ditampilkan adalah tabel nasabah dengan
perubahan yang dilakukan pada transaksi sampai savepoint s1. Perubahan setelah
savepoint tersebut tidak disimpan.
LAMPIRAN II
SOAL
1. Buatlah tabel buku seperti berikut.
24
25
JAWABAN
1.
26
2.
3.
27
4.
5.
28