Back to IF3140 Sistem Basis Data
Problem Set: Penanganan Deadlock
Mata Pelajaran: Sistem Basis Data (Concurrency Control Lanjutan)
Estimasi Waktu: 90-120 menit
Total Nilai: 100 poin (Bobot terdistribusi)
Tujuan Pembelajaran
Setelah menyelesaikan problem set ini, mahasiswa diharapkan dapat:
-
Mengidentifikasi dan membedakan empat kondisi perlu deadlock.
-
Menganalisis secara kritis trade-off antara strategi Deadlock Prevention, Avoidance, dan Detection.
-
Menguasai mekanisme skema Deadlock Avoidance (Wait-Die, Wound-Wait) dan konsekuensinya (termasuk starvation).
-
Mampu membangun dan menginterpretasi Wait-for Graph (WFG) untuk mendeteksi siklus deadlock.
-
Mengevaluasi faktor-faktor dalam Victim Selection dan proses Deadlock Recovery.
-
Mensintesis dan merekomendasikan strategi penanganan deadlock yang tepat untuk skenario dunia nyata.
Petunjuk Umum
-
Bacalah setiap bagian soal dengan teliti.
-
Bagian I & II: Jawablah langsung pada tabel yang disediakan.
-
Bagian III: Jawablah pertanyaan secara analitis dan berikan justifikasi yang kuat untuk setiap poin. Gunakan terminologi yang presisi.
BAGIAN I: Matriks Analisis Strategi & Mekanisme (Total 20 Poin)
Fokus: Pemahaman komparatif dan konseptual tingkat tinggi.
Soal 1. Matriks Perbandingan Strategi Deadlock (10 poin)
Instruksi: Tentukan strategi penanganan deadlock (Prevention, Avoidance, Detection) yang paling sesuai dengan setiap pernyataan.
| No | Pernyataan | Prevention | Avoidance | Detection |
| 1 | Paling optimis; mengasumsikan deadlock jarang terjadi. | |||
| 2 | Paling pesimis; merancang sistem agar deadlock mustahil terjadi. | |||
| 3 | Melakukan pemeriksaan safe state secara dinamis saat ada permintaan lock. | |||
| 4 | Membutuhkan mekanisme recovery (misal: Victim Selection). | |||
| 5 | Menyerang salah satu dari 4 kondisi perlu (misal: Circular Wait). | |||
| 6 | Menggunakan skema berbasis timestamp (Wait-Die / Wound-Wait). | |||
| 7 | Menggunakan Wait-for Graph untuk menemukan siklus. | |||
| 8 | Cenderung memiliki tingkat konkurensi tertinggi (mengabaikan biaya recovery). | |||
| 9 | Cenderung memiliki tingkat konkurensi terendah (karena aturan kaku). | |||
| 10 | Memiliki overhead pada setiap permintaan lock untuk memeriksa timestamp. |
Soal 2. Matriks Konsep & Mekanisme Deadlock (10 poin)
Instruksi: Tentukan konsep atau mekanisme yang paling tepat untuk setiap deskripsi.
Pilihan:
A. Mutual Exclusion
B. Hold and Wait
C. No Preemption
D. Circular Wait
E. Pre-declaration
F. Total Order
G. Wait-Die
H. Wound-Wait
I. Wait-for Graph (WFG)
J. Victim Selection
| No | Deskripsi | Konsep (A-J) |
| 1 | Kondisi: Sebuah transaksi memegang lock-A sambil meminta lock-B. | |
| 2 | Kondisi: T1 -> T2 -> T3 -> T1. | |
| 3 | Metode Pencegahan: Mengharuskan T meminta semua lock di awal. | |
| 4 | Metode Pencegahan: Menetapkan A=1, B=2, C=3, dan memaksa T minta lock A sebelum B. | |
| 5 | Skema: Ti(Tua) meminta ke Tj(Muda) Ti MENUNGGU. | |
| 6 | Skema: Ti(Tua) meminta ke Tj(Muda) Tj di-ROLLBACK. | |
| 7 | Skema: Ti(Muda) meminta ke Tj(Tua) Ti MENUNGGU. | |
| 8 | Alat Deteksi: Sebuah graf di mana siklus menandakan deadlock. | |
| 9 | Proses Pemulihan: Memilih transaksi mana yang akan di-abort untuk memutus siklus. | |
| 10 | Kondisi: lock yang dipegang T tidak bisa diambil paksa oleh sistem. |
BAGIAN II: Analisis Konseptual Benar/Salah (Total 20 Poin)
Fokus: Menguji pemahaman mendalam dan nuansa antar konsep.
Instruksi: Tentukan apakah setiap pernyataan berikut BENAR (B) atau SALAH (S).
| No | Pernyataan | B / S |
| 1 | Deadlock hanya dapat terjadi jika keempat kondisi perlu (Mutex, H&W, No Preemption, Circular Wait) terpenuhi secara bersamaan. | |
| 2 | Mutual Exclusion adalah kondisi yang paling ideal untuk dihilangkan guna mencegah deadlock. | |
| 3 | Skenario klasik T1: XL(A), req(B); T2: XL(B), req(A) adalah contoh terpenuhinya kondisi Hold and Wait dan Circular Wait. | |
| 4 | Deadlock Prevention (pencegahan) adalah strategi yang lebih dinamis daripada Deadlock Avoidance (penghindaran). | |
| 5 | Metode Pre-declaration (minta semua lock di awal) menyerang kondisi Circular Wait. | |
| 6 | Kelemahan utama metode Total Order adalah sulitnya transaksi memprediksi semua lock yang dibutuhkan di awal. | |
| 7 | Deadlock Avoidance tidak menjamin deadlock tidak akan pernah terjadi, tetapi hanya menguranginya. | |
| 8 | Dalam skema timestamp, asumsi TS(Ti) < TS(Tj) berarti Ti lebih TUA dari Tj. | |
| 9 | Dalam skema Wait-Die, jika Ti(Tua) meminta lock yang dipegang Tj(Muda), Ti akan rollback (Mati). | |
| 10 | Dalam skema Wound-Wait, jika Ti(Muda) meminta lock yang dipegang Tj(Tua), Tj akan rollback (Terluka). | |
| 11 | Wait-Die adalah skema non-preemptive. | |
| 12 | Wound-Wait cenderung menghasilkan lebih sedikit rollback daripada Wait-Die karena transaksi muda diizinkan menunggu transaksi tua. | |
| 13 | Solusi untuk starvation di skema timestamp adalah memberikan timestamp baru yang lebih muda setiap kali transaksi di-restart. | |
| 14 | Di Wait-for Graph (WFG), panah Ti -> Tj berarti Ti sedang memegang lock yang ditunggu oleh Tj. | |
| 15 | Jika sebuah WFG tidak memiliki siklus, sistem dijamin bebas dari deadlock. | |
| 16 | Menjalankan deadlock detection setiap kali ada transaksi yang menunggu adalah strategi dengan overhead pemeriksaan terendah. | |
| 17 | Victim Selection yang baik akan selalu memilih transaksi yang paling muda (TS terbesar) untuk di-rollback. | |
| 18 | Starvation dapat terjadi dalam Deadlock Recovery jika sebuah transaksi yang sama terus-menerus dipilih sebagai victim. | |
| 19 | Partial Rollback (menggunakan savepoint) lebih kompleks untuk diimplementasikan tetapi lebih efisien daripada Total Rollback. | |
| 20 | DBMS komersial modern (seperti PostgreSQL) cenderung menggunakan Deadlock Avoidance (Wait-Die) karena lebih efisien. |
BAGIAN III: Studi Kasus, Analisis, & Sintesis (Total 60 Poin)
Fokus: Aplikasi, analisis, dan sintesis konsep penanganan deadlock.
Soal 3. Analisis Deadlock Detection & Recovery (20 poin)
Tipe: Analisis
Kasus: Sebuah sistem DBMS menggunakan Deadlock Detection. Pada suatu waktu (T), Lock Manager mencatat status berikut:
-
T1: Memegang
lock-XpadaData-A; Menunggulock-SpadaData-B. -
T2: Memegang
lock-SpadaData-B; Menunggulock-XpadaData-C. -
T3: Memegang
lock-XpadaData-C; Menunggulock-XpadaData-B. -
T4: Memegang
lock-XpadaData-E; Menunggulock-XpadaData-A. -
T5: Memegang
lock-SpadaData-F; Menunggulock-XpadaData-E.
Pertanyaan:
a. (5 poin) Gambarkan Wait-for Graph (WFG) yang lengkap berdasarkan status sistem di atas.
b. (5 poin) Analisislah WFG tersebut. Apakah terjadi deadlock? Jika ya, sebutkan semua siklus (cycle) yang terbentuk dan transaksi mana saja yang terlibat.
c. (5 poin) Sistem memutuskan melakukan Deadlock Recovery dengan memilih T2 sebagai victim dan melakukan Total Rollback. Jelaskan bagaimana WFG berubah dan siklus mana yang terputus.
d. (5 poin) Sebutkan dua faktor (berdasarkan materi Victim Selection) yang mungkin menjadi alasan sistem TIDAK memilih T1 sebagai victim.
Soal 4. Studi Kasus Deadlock Avoidance (20 poin)
Tipe: Studi Kasus
Kasus: Sebuah sistem menggunakan skema Deadlock Avoidance berbasis timestamp. Semakin kecil timestamp, semakin TUA transaksi. Diberikan 4 transaksi:
-
TS(T1) = 10 -
TS(T2) = 20 -
TS(T3) = 30 -
TS(T4) = 40
Berikut adalah urutan kejadian yang terjadi secara sekuensial:
-
T2: XL(A)(Diberikan) -
T3: XL(B)(Diberikan) -
T1: XL(B)(Meminta lock yang dipegang T3) -
T4: XL(A)(Meminta lock yang dipegang T2) -
T3: XL(A)(Meminta lock yang dipegang T2)
Pertanyaan:
Analisislah secara rinci apa yang terjadi pada Langkah 3, Langkah 4, dan Langkah 5 jika sistem menerapkan:
a. (8 poin) Skema Wait-Die (Non-preemptive).
b. (8 poin) Skema Wound-Wait (Preemptive).
c. (4 poin) Jelaskan mengapa T4 sangat rentan mengalami starvation dalam skema Wait-Die, dan bagaimana solusi yang tepat untuk mengatasinya?
Soal 5. Esai Sintesis: Strategi Prevention vs. Detection (20 poin)
Tipe: Esai Sintesis
Skenario: Anda sedang merancang sistem manajemen inventaris gudang. Ada dua operasi utama:
-
T_Order (Order Fulfillment): Transaksi singkat, sangat sering terjadi. Harus mengunci (
lock-X)ItemStokdanLokasiRakuntuk mengurangi stok. -
T_Audit (Audit Gudang): Transaksi analitik, sangat lama (berjam-jam). Harus mengunci (
lock-S)ItemStok,LokasiRak, danDataSuppliersecara bersamaan.
Masalah deadlock klasik dapat terjadi jika:
-
T_Order_1:XL(ItemStok), menungguXL(LokasiRak) -
T_Order_2:XL(LokasiRak), menungguXL(ItemStok)
Tugas (Esai Analisis):
Anda diminta membandingkan dua strategi untuk menangani deadlock antar T_Order ini.
a. (5 poin) Jelaskan bagaimana Deadlock Prevention (menggunakan Total Order, misal: selalu kunci ItemStok dulu baru LokasiRak) dapat menjamin deadlock ini tidak terjadi.
b. (5 poin) Jelaskan bagaimana Deadlock Detection (menggunakan WFG) menangani skenario jika deadlock ini terjadi.
c. (10 poin) Sintesis & Rekomendasi: Bandingkan trade-off (kinerja, konkurensi, kompleksitas implementasi bagi developer) antara strategi (a) dan (b) khusus untuk T_Order. Strategi mana yang akan Anda rekomendasikan untuk menangani deadlock T_Order vs T_Order? Berikan justifikasi yang kuat. (Abaikan T_Audit untuk pertanyaan ini).
BAGIAN I: Matriks Analisis Strategi & Mekanisme
Soal 1. Matriks Perbandingan Strategi Deadlock
No Pernyataan Prevention Avoidance Detection 1 Paling optimis; mengasumsikan deadlock jarang terjadi. X 2 Paling pesimis; merancang sistem agar deadlock mustahil terjadi. X 3 Melakukan pemeriksaan safe state secara dinamis saat ada permintaan lock. X 4 Membutuhkan mekanisme recovery (misal: Victim Selection). X 5 Menyerang salah satu dari 4 kondisi perlu (misal: Circular Wait). X 6 Menggunakan skema berbasis timestamp (Wait-Die / Wound-Wait). X 7 Menggunakan Wait-for Graph untuk menemukan siklus. X 8 Cenderung memiliki tingkat konkurensi tertinggi (mengabaikan biaya recovery). X 9 Cenderung memiliki tingkat konkurensi terendah (karena aturan kaku). X 10 Memiliki overhead pada setiap permintaan lock untuk memeriksa timestamp. X Soal 2. Matriks Konsep & Mekanisme Deadlock
No Deskripsi Konsep (A-J) 1 Kondisi: Sebuah transaksi memegang lock-Asambil memintalock-B.B (Hold and Wait) 2 Kondisi: T1 -> T2 -> T3 -> T1.D (Circular Wait) 3 Metode Pencegahan: Mengharuskan T meminta semua lockdi awal.E (Pre-declaration) 4 Metode Pencegahan: Menetapkan A=1,B=2,C=3, dan memaksa T mintalockA sebelum B.F (Total Order) 5 Skema: Ti(Tua) meminta ke Tj(Muda) Ti MENUNGGU. G (Wait-Die) 6 Skema: Ti(Tua) meminta ke Tj(Muda) Tj di-ROLLBACK. H (Wound-Wait) 7 Skema: Ti(Muda) meminta ke Tj(Tua) Ti MENUNGGU. H (Wound-Wait) 8 Alat Deteksi: Sebuah graf di mana siklus menandakan deadlock. I (Wait-for Graph) 9 Proses Pemulihan: Memilih transaksi mana yang akan di-abort untuk memutus siklus. J (Victim Selection) 10 Kondisi: lockyang dipegang T tidak bisa diambil paksa oleh sistem.C (No Preemption) BAGIAN II: Analisis Konseptual Benar/Salah
No Pernyataan B / S 1 Deadlock hanya dapat terjadi jika keempat kondisi perlu (Mutex, H&W, No Preemption, Circular Wait) terpenuhi secara bersamaan. B 2 Mutual Exclusion adalah kondisi yang paling ideal untuk dihilangkan guna mencegah deadlock. S (Ini hampir tidak mungkin dihilangkan karena inheren dengan locking eksklusif). 3 Skenario klasik T1: XL(A), req(B); T2: XL(B), req(A)adalah contoh terpenuhinya kondisi Hold and Wait dan Circular Wait.B 4 Deadlock Prevention (pencegahan) adalah strategi yang lebih dinamis daripada Deadlock Avoidance (penghindaran). S (Prevention kaku, Avoidance dinamis). 5 Metode Pre-declaration (minta semua lock di awal) menyerang kondisi Circular Wait. S (Menyerang Hold and Wait). 6 Kelemahan utama metode Total Order adalah sulitnya transaksi memprediksi semua lock yang dibutuhkan di awal. S (Ini kelemahan Pre-declaration. Kelemahan Total Order adalah tidak fleksibel). 7 Deadlock Avoidance tidak menjamin deadlock tidak akan pernah terjadi, tetapi hanya menguranginya. S (Avoidance (Wait-Die/Wound-Wait) menjamin deadlock tidak terjadi). 8 Dalam skema timestamp, asumsi TS(Ti) < TS(Tj)berarti Ti lebih TUA dari Tj.B 9 Dalam skema Wait-Die, jika Ti(Tua) meminta lock yang dipegang Tj(Muda), Ti akan rollback (Mati). S (Ti MENUNGGU). 10 Dalam skema Wound-Wait, jika Ti(Muda) meminta lock yang dipegang Tj(Tua), Tj akan rollback (Terluka). S (Ti MENUNGGU). 11 Wait-Die adalah skema non-preemptive. B (Karena T yang meminta (Ti) yang rollback, bukan T yang memegang (Tj)). 12 Wound-Wait cenderung menghasilkan lebih sedikit rollback daripada Wait-Die karena transaksi muda diizinkan menunggu transaksi tua. B 13 Solusi untuk starvation di skema timestamp adalah memberikan timestamp baru yang lebih muda setiap kali transaksi di-restart. S (Solusinya adalah memakai timestamp LAMA/ASLI agar ia menjadi “tua”). 14 Di Wait-for Graph (WFG), panah Ti -> Tjberarti Ti sedang memegang lock yang ditunggu oleh Tj.S (Artinya Ti MENUNGGU Tj). 15 Jika sebuah WFG tidak memiliki siklus, sistem dijamin bebas dari deadlock. B 16 Menjalankan deadlock detection setiap kali ada transaksi yang menunggu adalah strategi dengan overhead pemeriksaan terendah. S (Tertinggi. Yang periodik lebih rendah). 17 Victim Selection yang baik akan selalu memilih transaksi yang paling muda (TS terbesar) untuk di-rollback. S (Belum tentu. Faktor utamanya adalah biaya rollback, jumlah lock, dll). 18 Starvation dapat terjadi dalam Deadlock Recovery jika sebuah transaksi yang sama terus-menerus dipilih sebagai victim. B 19 Partial Rollback (menggunakan savepoint) lebih kompleks untuk diimplementasikan tetapi lebih efisien daripada Total Rollback. B 20 DBMS komersial modern (seperti PostgreSQL) cenderung menggunakan Deadlock Avoidance (Wait-Die) karena lebih efisien. S (Cenderung menggunakan Deadlock Detection karena deadlock dianggap jarang terjadi). BAGIAN III: Studi Kasus, Analisis, & Sintesis
Soal 3. Analisis Deadlock Detection & Recovery
a. Wait-for Graph (WFG):
Nodes: T1, T2, T3, T4, T5
Edges (Panah):
T1 → T2 (T1 tunggu B dari T2)
T2 → T3 (T2 tunggu C dari T3)
T3 → T2 (T3 tunggu B dari T2)
T4 → T1 (T4 tunggu A dari T1)
T5 → T4 (T5 tunggu E dari T4)
b. Analisis Deadlock:
YA, terjadi deadlock.
Siklus 1 (Utama): T2 → T3 → T2. Transaksi T2 dan T3 saling menunggu dan deadlock.
Siklus 2 (Implisit): T1 → T2 → T3 → T2. Melibatkan T1.
Siklus 3 (Implisit): T4 → T1 → T2 → T3 → T2. Melibatkan T4.
Siklus 4 (Implisit): T5 → T4 → T1 → T2 → T3 → T2. Melibatkan T5.
(Inti dari deadlock adalah siklus T2 → T3 → T2. Transaksi lain (T1, T4, T5) terjebak dalam rantai tunggu yang berujung pada siklus tersebut).
c. Recovery (T2 Victim):
T2 di-abort dan melakukan Total Rollback.
T2 melepaskan semua lock yang dipegangnya (yaitu lock-S pada Data-B).
Perubahan WFG:
Panah T1 → T2 HILANG (karena T1 tidak lagi menunggu B dari T2; T1 akan mendapatkan lock-S pada B).
Panah T3 → T2 HILANG (karena T3 tidak lagi menunggu B dari T2; T3 akan mendapatkan lock-X pada B).
Panah T2 → T3 HILANG (karena T2 di-abort dan tidak lagi menunggu C).
Hasil: Siklus T2 → T3 → T2 terputus. Deadlock teratasi.
d. Alasan TIDAK memilih T1:
- Biaya Rollback: T1 mungkin telah berjalan lebih lama atau memodifikasi lebih banyak data daripada T2, sehingga biaya rollback T1 jauh lebih mahal.
- Prioritas: T1 mungkin merupakan transaksi dengan prioritas lebih tinggi (misal: transaksi admin) dibandingkan T2 (misal: transaksi pengguna biasa).
- (Jawaban lain yang diterima: Faktor Starvation, T1 sudah pernah jadi victim sebelumnya).
Soal 4. Studi Kasus Deadlock Avoidance
Aturan: Ti(Minta) vs Tj(Pegang). T1(10) < T2(20) < T3(30) < T4(40). (Tua → Muda).
a. Skema Wait-Die (Tua MENUNGGU Muda; Muda MATI lawan Tua):
Langkah 3:
T1(TS=10) memintaBdariT3(TS=30). (Tua meminta ke Muda).
- Hasil: T1 MENUNGGU.
Langkah 4:
T4(TS=40) memintaAdariT2(TS=20). (Muda meminta ke Tua).
- Hasil: T4 MATI (Rollback).
Langkah 5:
T3(TS=30) memintaAdariT2(TS=20). (Muda meminta ke Tua).
Hasil: T3 MATI (Rollback).
b. Skema Wound-Wait (Tua MELUKAI Muda; Muda MENUNGGU Tua):
Langkah 3: T1 (TS=10) meminta B dari T3 (TS=30). (Tua meminta ke Muda).
Hasil: T1 MELUKAI T3. T3 di-rollback dan melepaskan lock B. T1 mendapatkan lock B.
Langkah 4: T4 (TS=40) meminta A dari T2 (TS=20). (Muda meminta ke Tua).
Hasil: T4 MENUNGGU.
Langkah 5: T3 (TS=30) meminta A dari T2 (TS=20). (Muda meminta ke Tua).
Hasil: T3 MENUNGGU. (Asumsi T3 di-restart dari Langkah 3 dan belum sampai ke langkah ini. Jika T3 restart dan mencoba lagi, ia akan menunggu T2).
c. Starvation T4 (Wait-Die):
T4 adalah transaksi paling MUDA (TS=40). Dalam skema Wait-Die, setiap kali T4 meminta lock yang dipegang oleh transaksi yang lebih TUA (T1, T2, atau T3), T4 akan “MATI” (di-rollback). Jika T4 terus-menerus bertemu lock yang dipegang transaksi tua, T4 tidak akan pernah selesai.
Solusi: Ketika T4 di-restart setelah rollback, T4 harus tetap menggunakan timestamp aslinya (TS=40). Ini penting. Meskipun T4 akan tetap rollback jika bertemu T1/T2/T3, seiring T1/T2/T3 selesai, T4 akhirnya akan menjadi transaksi “paling tua” yang aktif di sistem dan dijamin akan selesai.
Soal 5. Esai Sintesis: Strategi Prevention vs. Detection
a. Deadlock Prevention (Total Order):
Strategi ini menyerang kondisi Circular Wait. Kita menetapkan urutan total pada sumber daya, misal: ItemStok = 1, LokasiRak = 2.
Sistem memaksa semua transaksi (T_Order) untuk meminta lock hanya dalam urutan tersebut.
T_Order WAJIB meminta XL(ItemStok) terlebih dahulu, baru kemudian meminta XL(LokasiRak).
Skenario deadlock T_Order_2 (pegang LokasiRak, minta ItemStok) menjadi mustahil secara struktural, karena T_Order_2 akan dipaksa meminta ItemStok (1) sebelum LokasiRak (2).
Dampak pada Developer: Ini memindahkan beban penanganan deadlock dari DBMS ke developer. Developer harus tahu dan mematuhi urutan locking ini di kode aplikasi mereka. Jika mereka salah urutan, aplikasi gagal.
b. Deadlock Detection (WFG):
Strategi ini membiarkan developer meminta lock dalam urutan apapun (misal: T_Order_1 minta Stok→Rak, T_Order_2 minta Rak→Stok).
Ketika skenario deadlock terjadi, WFG akan membentuk siklus: T_Order_1 → T_Order_2 → T_Order_1.
Sistem DBMS (bukan developer) akan menjalankan algoritma deteksi (misal: setiap 1 detik).
Ketika siklus ditemukan, DBMS secara otomatis melakukan Recovery: memilih satu T_Order sebagai victim (misal: T_Order_2), me-rollback (abort) transaksi tersebut, dan melepaskan lock-nya.
T_Order_1 kemudian mendapatkan lock dan selesai. T_Order_2 akan di-restart oleh aplikasi.
c. Sintesis & Rekomendasi:
Trade-off:
Prevention (Total Order):
Kinerja/Konkurensi: Sedikit mengurangi konkurensi karena memaksa urutan, tapi tidak ada biaya runtime check atau rollback. Kinerja sangat prediktabel.
Kompleksitas: Kompleksitas tinggi bagi developer (harus hafal dan patuh urutan).
Detection (WFG):
Kinerja/Konkurensi: Konkurensi tertinggi (membolehkan urutan fleksibel). Namun, kinerja tidak prediktabel karena adanya biaya deteksi (periodik) dan biaya recovery (rollback T_Order yang mahal).
Kompleksitas: Kompleksitas nol bagi developer (DBMS menangani semua).
Rekomendasi: Untuk skenario ini (transaksi T_Order yang sangat sering terjadi dan kritis), Deadlock Prevention (Total Order) adalah pilihan yang lebih superior.
Justifikasi:
Prediktabilitas Kinerja: T_Order adalah transaksi inti. Kita tidak bisa menerima T_Order random di-rollback (seperti pada Detection), yang menyebabkan pengalaman pengguna buruk (pesanan gagal tanpa alasan jelas). Prevention menjamin T_Order tidak akan pernah gagal karena deadlock.
Biaya Rollback vs. Disiplin: Biaya rollback sebuah order (batal bayar, kembalikan stok) lebih mahal daripada biaya mendisiplinkan developer untuk selalu mengunci ItemStok sebelum LokasiRak.
Kesederhanaan Aturan: Aturannya sederhana (“selalu kunci Stok dulu”). Ini adalah overhead implementasi yang wajar untuk menjamin tidak ada deadlock pada proses bisnis inti. Detection lebih cocok jika urutan lock tidak dapat diprediksi, tapi di sini urutannya sangat prediktabel.