Anda di halaman 1dari 18

PEMPROGRAMAN BASIS DATA LANJUT

TRANSACTION

M. ADNAN NUR, S.KOM., MT.


TRANSACTION

 Transaction Database merupakan sebuah aksi atau serangkaian aksi yang


dilakukan oleh pengguna atau aplikasi yag mengakses atau mengubah isi dari basis
data
 Sebuah Transaction selalu mengubah basis data dalam satu keadaan yang
konsisten ke keadaan konsisten lainnya walaupun terjadi pelanggaran konsistensi
data selama transaksi berjalan.

Contoh:
Misalkan si-A memiliki saldo direkeningnya sebesar 5.000.00 dan si-B saldonya 1.000.000, kemudian si-
A mentransfer uangnya ke si-B sebesar 500.00 maka bentuk prosesnya sebagai berikut :
- Saldo si-A dikurangi 500.000 sehingga sisa saldonya 4.500.000
- Saldo si-B ditambah 500.000 sehingga saldonya 1.500.000
Kedua proses tersebut harus jalan agar data total saldonya konsisten, jika ada salah satu proses yang
batal akibat pemadaman listrik atau kendala teknis lainnya maka seluruh proses harus dibatalkan karena
jika tidak maka total saldo si-A berkurang tetapi saldo si-B tidak bertambah.
Dari ilustrsi diatas dapat disimpulkan bahwa kedua proses tersebut merupakan satu kesatuan transaksi.
Jika ada salah satu proses yang batal maka semua proses dibatalkan. Transaksi berhasil jika semua
proses berhasil dijalankan.
SIFAT-SIFAT TRANSACTION

Sifat-sifat Transaction dikenal dengan istilah ACID yaitu :


 Atomicity, transaksi merupakan unit yang tidak terlihat dan harus dilakukan secara
keseluruhan atau tidak sama sekali
 Consistency, jika database pada awalnya dalam keadaan konsisten, maka
pelaksanaan transaksi dengan sendirinya juga harus meninggalkan basis data tetap
dalam status konsisten
• Isolation, memastikan bahwa secara bersamaan (konkuren) eksekusi transaksi
terisolasi dari yang lain
• Durability, jika transaksi telah selesai/dilaksanakan (commit) maka perubahan data
akan bertahan walaupun terjadi kegagalan sistem pada transaksi berikutnya
Transaction Pada MySQL
MySQL mendukung Transaction hanya untuk table engine InnoDB. Untuk memeriksa dukungan
transaksi basis data dapat menggunakan perintah berikut:

Hasil dari perintah diatas menampilkan daftar engine yang mendukung transaksi basis data.
Untuk sequence tidak dapat digunakan secara eksplisit dalam membuat tabel karena hanya
berfungsi untuk menampilkan urutan angka secara ascending maupun descending
Implementasi Transaction
Transaksi pada MySQL dibuka dengan perintah : BEGIN; atau START TRANSATION;

Dan diakhiri dengan perintah : COMMIT;

Jika terjadi error atau keluar dari DBMS sebelum perintah commit maka seluruh proses akan
dibatalkan

Praktikum 1:
Buat database ‘bank’ dan tabel ‘rekening’:
Lanjutan Praktikum 1 :
Tambahkan data pada rekening
Saldo si-A 5.000.000
Saldo si-B 1.000.000

Memindahkan saldo dari si-A ke si-B sebesar 500.000. Transaksi dimulai dengan perintah berikut:

Transaksi ini terdiri atas 2 proses yaitu proses-1 mengurangi saldo si-A dan proses-2 menambah saldo si-B.
Proses-1 dilakukan dengan mengurangi saldo si-A yang mempunyai no.Rek 0000000001

Mengecek posisi saldo :


Saldo si-A telah berkurang menjadi 4.500.000
Lanjutan Praktikum 1 :
Selanjutnya kita coba keluar dari mysql sebelum proses-2 dan commit
kemudian mengecek apakah proses-1 masih tersimpan.
Keluar dari mysql

Setelah masuk kembali ke mysql dan


mengecek posisi saldo, ternyata
saldo si-A kembali 5.000.000 yang
artinya proses-1 dibatalkan

Hal ini menunjukkan bahwa seluruh proses setelah START TRANSACTION akan dibatalkan jika perintah
COMMIT tidak dijalankan
Praktikum 2:
Pada contoh 2 ini, kita akan coba menyelesaikan seluruh proses hingga commit . Kemudian keluar dari mysql
dan masuk kembali untuk mengecek apakah proses masih tersimpan

Seluruh proses dan commit telah


dijalankan.
Posisi saldo si-A 4.500.000 dan
Posisi saldo si-B 1.500.000
Lanjutan Praktikum 2:
Selanjutnya kita keluar dari mysql dan masuk kembali untuk mengecek posisi saldo

Setelah di cek posisi saldo tetap sama yang artinya seluruh proses tetap tersimpan secara permanen
Autocommit Mode
Selain menggunakan pernyataan START TRANSACTION, transaction juga dapat diatur
menggunakan autocommit. Nilai default dari autocommit adalah 1 yang menyatakan bahwa
transaksi basis data tidak aktif atau setiap perintah akan langsung diterapkan secara permanen
jika tidak menggunakan START TRANSACTION.
Berikut perintah untuk mengecek autocommit :

Praktikum 3 :
Atur variabel autommit dengan nilai 0

Tambahkan data rekening


Lanjutan Praktikum 3 :
Cek data pada tabel rekening

Keluar dari MySQL dan masuk kembali untuk mengecek data pada tabel rekening

Pada tabel rekening terlihat bahwa data


yang baru dimasukkan sudah tidak ada
yang artinya data tidak tersimpan secara
permanen
Lanjutan Praktikum 3 :
Ketika variable autocommit di set 0 maka perintah yang dijalankan harus diakhiri dengan perintah commit
agar data tersimpan secara permanen.
Kita akan mengulang perintah sebelumnya tetapi ditutup dengan perintah commit;

Keluar dari MySQL dan masuk kembali untuk mengecek data pada tabel rekening

Menutup mysql

Data tersimpan secara permanen


walaupun mysql ditutup dan dibuka
kembali
Rollback Transaction
ROLLBACK digunakan untuk membatalkan transaksi yang dimulai dengan Start
Transaction atau autocommit = 0;

Praktikum 4 :
Manambahkan data pada tabel rekening

Data yang sudah


ditambahkan

Pada bagian akhir ditambahkan perintah ROLLBACK.


Lanjutan Praktikum 4 :
Keluar dari MySQL dan masuk kembali untuk mengecek data pada tabel rekening

Hasil dari perintah diatas terlihat bahwa data yang dimasukkan tidak tersimpan secara permanen karena
adanya perintah ROLLBACK;
Savepoint Transaction
Dengan ROLLBACK seluruh proses akan dibatalkan. Terkadang situasi tersebut tidak diinginkan
misalnya terdapat 3 proses namun hanya proses 2 dan 3 yang akan dibatalkan sedangkan proses
1 tetap dijalankan. Untuk kasus seperti ini dapat menggunakan SAVEPOINT.
Berikut perintahnya : SAVEPOINT nama_savepoint;

Pemanggilannya pada ROLLBACK : ROLLBACK TO SAVEPOINT nama_savepoint;

Praktikum 5 :

Tambahkan data rekening dengan nama si-D dan buat savepoint dengan nama proses_1

Tambahkan data rekening dengan nama si-E


Lanjutan Praktikum 5 :
Tampilkan data yang sudah ditambahkan

Berikan perintah rollback ke savepoint proses 1

Cek kembali data pada tabel rekening

Dari hasil perintah diatas terlihat bahwa data rekening dengan nama si-E dibatalkan.
Lanjutan Praktikum 5 :
Jalankan perintah COMMIT untuk menyimpan data secara permanen
LANJUT KE MATERI BERIKUTNYA

Anda mungkin juga menyukai