Difference between revisions of "Konsep transaksi dan properti ACID"

From OnnoWiki
Jump to navigation Jump to search
 
Line 38: Line 38:
 
  sudo mysql -u root -p
 
  sudo mysql -u root -p
  
===Studi Kasus: Transfer Saldo==
+
==Studi Kasus: Transfer Saldo==
  
 
'''Tabel: rekening'''
 
'''Tabel: rekening'''

Latest revision as of 08:23, 14 April 2025

Tujuan Pembelajaran

Setelah mempelajari modul ini, mahasiswa diharapkan mampu:

  • Menjelaskan konsep transaksi dalam basis data.
  • Memahami prinsip ACID untuk menjaga konsistensi data.
  • Mengimplementasikan transaksi menggunakan MySQL di Ubuntu 24.04.


Apa Itu Transaksi?

Transaksi adalah satu unit kerja logis dalam sistem basis data yang mencakup satu atau lebih perintah SQL. Transaksi dianggap berhasil jika semua perintah di dalamnya berhasil dijalankan. Jika salah satu gagal, seluruh transaksi harus dibatalkan (rollback).

Contoh Umum Transaksi:

  • Transfer uang antar rekening
  • Pemesanan tiket
  • Pembelian barang di e-commerce

Properti ACID

ACID adalah empat properti utama yang memastikan keandalan transaksi.

Properti Penjelasan
Atomicity Seluruh transaksi dijalankan sepenuhnya atau tidak sama sekali
Consistency Menjaga integritas data sebelum dan sesudah transaksi
Isolation Transaksi berjalan seolah-olah satu per satu (tidak saling mengganggu)
Durability Hasil transaksi tetap ada meskipun terjadi crash setelah commit

Implementasi Transaksi di MySQL (Ubuntu 24.04)

Langkah Awal: Aktifkan MySQL dan Masuk ke CLI

sudo systemctl start mysql
sudo mysql -u root -p

Studi Kasus: Transfer Saldo

Tabel: rekening

CREATE TABLE rekening (
    id INT PRIMARY KEY,
    nama VARCHAR(50),
    saldo INT
);

INSERT INTO rekening VALUES (1, 'Andi', 100000), (2, 'Budi', 50000);

Transaksi di MySQL

Perintah utama:

  • `START TRANSACTION;`
  • `COMMIT;`
  • `ROLLBACK;`

Contoh Transaksi: Transfer Rp20.000 dari Andi ke Budi

-- Mulai transaksi
START TRANSACTION;

-- Kurangi saldo Andi
UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1;

-- Tambah saldo Budi
UPDATE rekening SET saldo = saldo + 20000 WHERE id = 2;

-- Selesaikan transaksi
COMMIT;

> Jika ada error, gunakan `ROLLBACK;` untuk membatalkan transaksi.

Contoh dengan ROLLBACK

START TRANSACTION;

UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1;

-- Simulasi kesalahan
-- ERROR: tabel tidak ditemukan
UPDATE rekening_tidak_ada SET saldo = saldo + 20000 WHERE id = 2;

-- Batalkan seluruh transaksi
ROLLBACK;

> Saldo Andi akan kembali ke semula karena transaksi dibatalkan.

Isolation Level (Opsional)

Untuk kontrol lebih lanjut, bisa gunakan perintah:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Tersedia 4 level isolasi di MySQL:

  • `READ UNCOMMITTED`
  • `READ COMMITTED`
  • `REPEATABLE READ` (default)
  • `SERIALIZABLE`

Kesimpulan

  • Transaksi penting untuk memastikan konsistensi dan keandalan sistem basis data.
  • Properti ACID menjamin bahwa transaksi aman dijalankan.
  • MySQL mendukung transaksi menggunakan perintah `START TRANSACTION`, `COMMIT`, dan `ROLLBACK`.
  • Pastikan engine tabel yang digunakan adalah InnoDB, bukan MyISAM (yang tidak mendukung transaksi).

Pranala Menarik