Lewati ke konten utama

F2 · Modul 13

Transaksi dan konkurensi

48 langkah singkat, dari mudah sampai tantangan.

  1. Level 1

    Kenal

  2. Level 2

    Paham

  3. Level 3

    Terapkan

  4. Level 4

    Tantangan

  5. Level 5

    Pendalaman

Intinya

  • Dua kasir yang membaca stok lalu menulis angka jadi bisa saling menimpa tanpa galat (pembaruan yang hilang). Telusuri konkurensi dengan tabel waktu.
  • Obat paling sederhana: pembaruan atomik bersyarat (SET stok = stok - ? WHERE … AND stok >= ?), lalu periksa jumlah baris yang berubah.
  • Pemeriksaan dan penulisan yang bergantung padanya harus berada di satu transaksi: BEGIN IMMEDIATE di SQLite, SELECT … FOR UPDATE di PostgreSQL.
  • Kunci dalam urutan yang sama untuk mencegah deadlock; galat kunci dan serialisasi ditangani dengan mencoba ulang seluruh transaksi, dengan batas.
  • Uji kode konkurensi dengan dua koneksi dan selang-seling yang ditentukan, bukan dengan satu koneksi.

Sebelum mulai

±4–5 jam termasuk lab PostgreSQL dua sesi; pendalaman opsional ±1 jam.

Modul ini memakai materi di bawah. Belum yakin? Ulas dulu bagian yang disebut.

Hasil belajar: setelah modul ini kamu bisa menjelaskan empat janji ACID; menelusuri jadwal dua transaksi yang berjalan bersamaan dengan tabel waktu dan mengenali pembaruan yang hilang (lost update) dan dirty read; memakai pembaruan atomik, SAVEPOINT, SELECT … FOR UPDATE, dan BEGIN IMMEDIATE; mengenali dan mencegah deadlock; menangani galat kunci dan serialisasi dengan mencoba ulang; dan (pendalaman) membedakan non-repeatable read, phantom, dan write skew, memilih tingkat isolasi PostgreSQL, serta menjelaskan MVCC.

Proyek: dua kasir mencatat penjualan, restok, dan pembayaran kasbon bersamaan tanpa merusak stok dan tanpa pembayaran ganda; laporan tetap konsisten saat ada penulisan.

Contoh Python dijalankan di folder berisi warung.db yang selalu segar. Keluaran PostgreSQL disalin dari dua koneksi sungguhan ke PostgreSQL 16.14; catatan seperti (B menunggu...) berarti pernyataan B belum selesai karena menunggu.

Istilah di modul ini (32)

Ketuk istilah untuk melihat penjelasannya. Di materi, istilah bergaris titik membuka kartu yang sama. Semua istilah course

Bahan modul

Semua kode, latihan, dan data modul ini dalam satu zip, untuk dijalankan di laptop atau Google Colab.

  • 17 contoh kode
  • 8 berkas latihan + tes
  • 2 berkas data
Lihat isi zip
  • BACA-DULU.txt
  • contoh_f2_13_124.py
  • contoh_f2_13_154.py
  • contoh_f2_13_311.py
  • contoh_f2_13_332.sql
  • contoh_f2_13_361.py
  • contoh_f2_13_646.sql
  • contoh_f2_13_672.py
  • contoh_f2_13_708.sql
  • contoh_f2_13_833.py
  • contoh_f2_13_880.py
  • contoh_f2_13_923.py
  • contoh_f2_13_953.py
  • contoh_f2_13_995.py
  • contoh_f2_13_1023.sql
  • contoh_f2_13_1782.sql
  • contoh_f2_13_1907.py
  • contoh_f2_13_1968.py
  • test_f2_13_8.py
  • latihan_f2_13_1.sql
  • latihan_f2_13_3.sql
  • test_f2_13_4.py
  • latihan_f2_13_2.sql
  • test_f2_13_5.py
  • test_f2_13_6.py
  • test_f2_13_7.py
  • kasbon.sql
  • warung.sql