Transkripsi dicocokkan dengan 4 halaman naskah asli.
Redaksi dirapikan untuk dibaca. Data, pilihan jawaban, dan subsoal mengikuti naskah; diagram dijelaskan dalam teks atau tabel.
Lompat ke soal
UAS Manajemen Basis Data 2025/2026
MIK1624403 / PAIK6403 / AIK21343 · Selasa, 9 Juni 2026 · 10.00–11.40 WIB (100 menit) · Buku tertutup.
Tuliskan nama dan NIM; jawaban jelas, tanpa pensil, urut nomor, satu lembar jawaban. Tidak diperkenankan meninggalkan ruangan atau menggunakan perangkat elektronik.
Studi kasus: perpustakaan digital
Data awal:
Page
Data
Nilai awal
P4
Stok buku rak 4
20
P7
Stok buku rak 7
15
P9
Peminjam aktif
100
P6
Katalog buku
50
1. Two-Phase Locking (30%)
Sistem sudah menggunakan Two-Phase Locking (2PL), sehingga semua peminjaman, pengembalian, dan pembaruan katalog diklaim pasti konsisten. Mustahil anggota membaca stok yang salah, mustahil terjadi duplikasi, dan sistem sepenuhnya aman dari anomali concurrency.
Analisis apakah klaim itu sepenuhnya benar atau masih ada yang keliru. Buat skenario transaksi perpustakaan secara eksplisit menggunakan nilai awal di atas (boleh menambahkan data) untuk membuktikan klaim atau kekurangannya. Identifikasi masalah yang terjadi serta mengapa 2PL gagal pada skenario tersebut.
2. Strict 2PL (35%)
T1 menangani peminjaman cabang utama, T2 sinkronisasi antarcabang, T3 pengembalian, T4 administrasi katalog, dan T5 backup otomatis.
Berhasil berarti lock diberikan; menunggu berarti menanti transaksi lain melepas lock.
a. Analisis kesalahan jadwal, perbaiki, dan jelaskan.
b. Setelah perbaikan (jika ada), apakah deadlock terjadi? Buktikan.
c. Jelaskan pencegahan deadlock pada kasus tersebut.
3. ARIES recovery (35%)
Tabel 1, log sebelum crash pertama:
LSN
Type
TransID
PageID
PrevLSN
Detail
10
UPDATE
T1
P4
null
Stok 20 → 18, meminjam 2
20
UPDATE
T2
P7
null
Stok 15 → 12, meminjam 3
30
UPDATE
T1
P9
10
Peminjam 100 → 102
40
CHECKPOINT
50
UPDATE
T2
P6
20
Katalog 50 → 48
60
UPDATE
T1
P4
30
Stok 18 → 16, meminjam 2 lagi
70
UPDATE
T3
P7
null
Stok 12 → 10
80
COMMIT
T2
—
50
T2 commit
90
UPDATE
T3
P9
70
Peminjam 102 → 105
100
UPDATE
T1
P6
60
Katalog 48 → 45
CRASH pertama terjadi setelah LSN 100 tersimpan.
Tabel 2, log saat recovery sebelum crash kedua:
LSN
Type
TransID
PageID
PrevLSN (judul sumber)
Detail
110
CLR
T1
P6
60
Undo LSN 100: Katalog 45 → 48
120
CLR
T1
P4
30
Undo LSN 60: Stok 16 → 18
130
CLR
T3
P9
70
Undo LSN 90: Peminjam 105 → 102
CRASH kedua terjadi setelah LSN 130 tersimpan. Checkpoint LSN 40 bersifat fuzzy. Restart ARIES menjalankan Analysis dan Redo, lalu sebagian Undo yang menghasilkan CLR di atas.
a. Rekonstruksi Dirty Page Table (DPT) dan Active Transaction Table (ATT) lengkap pada fase Analysis setelah masing-masing crash.
b. Tentukan titik awal Redo dan kerjakan Redo setelah masing-masing crash. Untuk setiap record, tentukan redo/skip berdasarkan seluruh kondisi yang tepat.
c. Kerjakan Undo setelah kedua crash. Tunjukkan UndoNextLSN pada setiap CLR untuk menghindari pengulangan undo, serta urutan Undo lengkap sampai seluruh loser transaction dibatalkan.
Tiga soal uraian berbasis studi kasus perpustakaan digital (halaman P4, P6, P7, P9): klaim keamanan 2PL, penjadwalan lock Strict 2PL dan deadlock, serta recovery ARIES dengan dua kali crash.
Data awal yang dipakai di seluruh soal: Stok[P4] = 20, Stok[P7] = 15, Peminjam[P9] = 100, Katalog[P6] = 50.
Soal 1 — Apakah 2PL membuat sistem “aman sepenuhnya”? (30%)
Inti soal: ada klaim bahwa karena sistem memakai Two-Phase Locking (2PL), semua transaksi pasti konsisten, tidak
ada pembacaan stok yang salah, tidak ada data ganda, dan sistem bebas dari semua anomali konkurensi. Kita diminta
menilai klaim itu dan membuktikannya dengan skenario.
Jawaban: klaim tersebut tidak sepenuhnya tepat. 2PL dasar memang menjamin jadwal conflict-serializable, tetapi
ada beberapa hal yang tidak dijamin:
Dirty read & cascading abort. Pada 2PL dasar, transaksi boleh melepas lock (fase shrinking) sebelum commit.
Transaksi lain bisa membaca nilai yang belum di-commit. Jika transaksi pertama kemudian abort, pembaca ikut harus
dibatalkan (cascading rollback). Jika pembaca sudah commit, jadwalnya bahkan tidak recoverable.
Deadlock. 2PL sama sekali tidak mencegah deadlock.
Phantom. Lock pada item/halaman yang sudah ada tidak mengunci baris yang belum ada, sehingga query agregat
(misalnya menghitung peminjam aktif) bisa memberi hasil berbeda bila ada insert di tengah transaksi.
Skenario pembuktian (dirty read pada 2PL dasar):
Langkah
T1: peminjaman 2 buku rak 4
T2: petugas cek stok rak 4
1
X-lock(P4), X-lock(P9) (fase growing selesai)
2
baca Stok[P4] = 20, tulis Stok[P4] = 18
3
unlock(P4) (fase shrinking dimulai, belum commit)
4
S-lock(P4), baca Stok[P4] = 18
5
menyetujui peminjaman lain berdasarkan stok 18, lalu commit
6
verifikasi anggota gagal, abort, Stok[P4] kembali 20
Jadwal ini mematuhi 2PL (T1 tidak pernah meminta lock setelah melepas lock), tetapi T2 sudah commit berdasarkan
nilai 18 yang tidak pernah ada secara resmi. Inilah “anggota perpustakaan membaca data stok yang salah” yang
dibantah oleh klaim tersebut.
Kenapa 2PL gagal di sini: 2PL hanya mengatur urutan akuisisi dan pelepasan lock, bukan kapan lock dilepas
relatif terhadap commit. Perbaikannya:
Strict 2PL: semua X-lock ditahan sampai commit/abort, sehingga mencegah dirty read dan cascading abort.
Penanganan deadlock: timeout, deteksi lewat wait-for graph, atau pencegahan (wait-die / wound-wait).
Predicate / index-range locking untuk mencegah phantom.
Soal 2 — Strict 2PL dan deadlock (35%)
Inti soal: lima transaksi dengan urutan permintaan lock yang direncanakan, lalu diberikan 10 langkah penjadwalan.
Kita diminta (a) mencari kesalahan pada jadwal, (b) menentukan apakah terjadi deadlock, (c) menerapkan deadlock
prevention.
Transaksi
Rencana akuisisi lock
T1
X(P4) → S(P9) → X(P6)
T2
S(P7) → X(P9) → S(P4)
T3
X(P7) → S(P6) → X(P4)
T4
S(P6) → X(P4) → S(P7)
T5
S(P4) → S(P7) → S(P9) → S(P6)
a. Analisis jadwal
Aturan kompatibilitas: S–S kompatibel, kombinasi lain dengan X tidak kompatibel. Transaksi yang sedang
menunggu tidak bisa mengajukan permintaan berikutnya.
#
Langkah di soal
Pemegang saat itu
Seharusnya
Status
1
T1 X(P4) berhasil
P4 bebas
berhasil
✔
2
T5 S(P4) menunggu
T1 pegang X(P4)
menunggu
✔
3
T3 X(P7) berhasil
P7 bebas
berhasil
✔
4
T2 S(P7) menunggu
T3 pegang X(P7)
menunggu
✔
5
T4 S(P6) berhasil
P6 bebas
berhasil
✔
6
T1 S(P9) berhasil
P9 bebas
berhasil
✔
7
T2 X(P9) menunggu
—
tidak boleh terjadi
✘
8
T3 S(P6) menunggu
T4 pegang S(P6)
berhasil (S–S kompatibel)
✘
9
T4 X(P4) menunggu
T1 pegang X(P4)
menunggu
✔
10
T1 X(P6) menunggu
T4 (dan T3) pegang S(P6)
menunggu
✔
Kesalahan 1 (langkah 7): T2 masih terblokir di langkah 4 menunggu S(P7), dan di rencananya X(P9) baru diminta
setelah S(P7) didapat. Transaksi yang sedang menunggu tidak bisa mengajukan permintaan lain, jadi langkah 7 harus
dihapus; T2 tetap menunggu S(P7).
Kesalahan 2 (langkah 8): P6 hanya dipegang T4 dalam mode shared. Permintaan S(P6) oleh T3 kompatibel, jadi
seharusnya berhasil. Setelah itu T3 melanjutkan ke rencana berikutnya, yaitu X(P4), dan menunggu T1.
b. Apakah terjadi deadlock? Ya.
Keadaan setelah jadwal diperbaiki:
T1 memegang X(P4), S(P9), lalu menunggu X(P6) (dipegang S oleh T4 dan T3)
T3 memegang X(P7), S(P6), lalu menunggu X(P4) (dipegang T1)
T4 memegang S(P6), lalu menunggu X(P4) (dipegang T1)
Wait-for graph: Ti → Tj artinya Ti menunggu lock yang dipegang Tj.
Ada siklus T1 → T4 → T1 dan T1 → T3 → T1, sehingga deadlock pasti terjadi. Karena Strict 2PL menahan X-lock sampai commit atau abort, dan tiap transaksi di siklus menunggu lock yang belum dilepas, tidak ada transaksi di siklus yang akan melepas lock. T2 dan T5 tidak berada di siklus, tetapi
ikut tertahan selamanya karena menunggu transaksi yang ter-deadlock.
Terbentuknya deadlock
1 / 4
Lock awal
T1 memegang X(P4), T3 memegang X(P7), dan T4 memegang S(P6).
P4X: T1
P7X: T3
P6S: T4
Sisi berarti transaksi di asal menunggu pemegang lock di tujuan.
c. Deadlock prevention
Pakai timestamp, dengan asumsi TS(T1) < TS(T2) < … < TS(T5) (T1 paling tua).
Wait-die (yang tua boleh menunggu yang muda; yang muda yang meminta ke yang tua langsung die/abort, lalu
restart dengan timestamp yang sama):
Langkah
Kejadian
Keputusan
2
T5 (muda) minta P4 dari T1 (tua)
T5 die
4
T2 (tua) minta P7 dari T3 (muda)
T2 menunggu
8
T3 minta S(P6), kompatibel dengan T4
diberikan
9
T4 (muda) minta X(P4) dari T1 (tua)
T4 die, S(P6) milik T4 dilepas
10
T1 (tua) minta X(P6) dari T3 (muda)
T1 menunggu
—
T3 (muda) minta X(P4) dari T1 (tua)
T3 die, X(P7) dan S(P6) dilepas
Setelah T3 abort, T1 mendapat X(P6) dan T2 mendapat S(P7). Semua sisi tunggu selalu dari tua ke muda, sehingga siklus
tidak mungkin terbentuk.
Alternatif lain:
Wound-wait: yang tua “melukai” (memaksa abort) yang muda yang menghalanginya; yang muda boleh menunggu yang tua.
Conservative (static) 2PL: karena rencana lock setiap transaksi sudah diketahui, minta semua lock sekaligus
di awal. Transaksi hanya mulai jika semua lock didapat, sehingga deadlock mustahil, dengan biaya konkurensi lebih rendah.
Lock ordering: semua transaksi mengambil lock dalam urutan halaman yang sama (misalnya P4 → P6 → P7 → P9).
Soal 3 — ARIES dengan dua kali crash (35%)
Inti soal: log berisi update T1, T2, T3, checkpoint fuzzy di LSN 40, commit T2 di LSN 80, lalu crash setelah
LSN 100. Saat recovery pertama, sistem sempat menulis CLR 110, 120, 130, lalu crash lagi. Kita diminta merekonstruksi
DPT dan ATT, menjalankan Redo, dan menjalankan Undo untuk kedua crash.
Ringkasan log:
LSN
Trans
Page
PrevLSN
Isi
10
T1
P4
–
Stok[P4] 20 → 18
20
T2
P7
–
Stok[P7] 15 → 12
30
T1
P9
10
Peminjam[P9] 100 → 102
40
CHECKPOINT (fuzzy)
50
T2
P6
20
Katalog[P6] 50 → 48
60
T1
P4
30
Stok[P4] 18 → 16
70
T3
P7
–
Stok[P7] 12 → 10
80
T2
50
COMMIT
90
T3
P9
70
Peminjam[P9] 102 → 105
100
T1
P6
60
Katalog[P6] 48 → 45
110
T1
P6
CLR, undoNext = 60
undo 100: 45 → 48
120
T1
P4
CLR, undoNext = 30
undo 60: 16 → 18
130
T3
P9
CLR, undoNext = 70
undo 90: 105 → 102
a. Analysis: DPT dan ATT
Analysis dimulai dari checkpoint (LSN 40) dan memindai log ke depan.
Setelah crash pertama (log sampai LSN 100):
ATT
Status
lastLSN
T1
U (aktif)
100
T3
U (aktif)
90
T2
commit di LSN 80; ARIES menulis END, lalu T2 dikeluarkan dari ATT
—
DPT
recLSN
P4
10
P7
20
P9
30
P6
50 (masuk saat LSN 50)
Loser: T1 dan T3.
Setelah crash kedua (log sampai LSN 130): CLR juga memperbarui ATT.
ATT
Status
lastLSN
undoNext
T1
U
120 (CLR)
30
T3
U
130 (CLR)
70
DPT tetap P4:10, P7:20, P9:30, P6:50, karena halaman-halaman yang disentuh CLR sudah ada di DPT.
b. Redo
Redo dimulai dari recLSN terkecil di DPT = 10. Sebuah record update/CLR di-skip jika salah satu terpenuhi:
halamannya tidak ada di DPT, atau
LSN record < recLSN halaman itu, atau
pageLSN halaman di disk ≥ LSN record (perubahan sudah sampai di disk).
Crash pertama:
LSN
Keputusan
Alasan
10, 20, 30
redo
halaman ada di DPT, LSN ≥ recLSN, belum ada di disk
40
—
checkpoint, bukan update
50, 60, 70
redo
sama
80
—
commit, bukan update
90, 100
redo
sama
Crash kedua: semua record di atas di-redo lagi ditambah CLR 110, 120, 130 (ARIES repeating history: CLR
juga di-redo). Dengan asumsi tidak ada flush, tidak ada record yang memenuhi kondisi skip. Sebagai contoh kapan skip
terjadi: jika P7 sempat di-flush setelah LSN 70, pageLSN(P7) = 70, sehingga LSN 20 dan 70 di-skip karena kondisi 3.
c. Undo
Crash pertama. ToUndo = lastLSN para loser = { 100 (T1), 90 (T3) }. ARIES selalu mengambil LSN terbesar:
Berikutnya ToUndo = { 90 (T3), 60 (T1) }. Menurut ARIES murni yang diambil 90 dulu. Log di soal justru menulis
CLR 120 untuk LSN 60 sebelum CLR 130 untuk LSN 90. Ini tetap menghasilkan state yang benar, karena undo antar
transaksi berbeda boleh diselang-seling selama urutan undo dalam setiap transaksi tetap mundur.
Undo 10 (T1, P4 18 → 20), tulis CLR 170, undoNext = null, lalu END T1 (180).
(LSN 140–180 adalah penomoran yang kita pilih; soal tidak menampilkannya.)
Nilai akhir setelah recovery selesai:
Data
Nilai
Penjelasan
Stok[P4]
20
semua update T1 dibatalkan
Stok[P7]
12
update T2 (commit) bertahan, update T3 dibatalkan
Peminjam[P9]
100
update T1 dan T3 dibatalkan
Katalog[P6]
48
update T2 (commit) bertahan, update T1 dibatalkan
Pembahasan ditulis independen oleh belajar.myudak, bukan kunci jawaban resmi. Soal asli tetap milik pengampu
mata kuliah dan ditampilkan langsung dari arsip Google Drive.