F2 · Modul 13
Transaksi dan konkurensi
48 langkah singkat, dari mudah sampai tantangan.
Level 1
Kenal
Level 2
Paham
Level 3
Terapkan
Level 4
Tantangan
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 IMMEDIATEdi SQLite,SELECT … FOR UPDATEdi 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