Manajemen Transaksi dan Konkurensi
Manajemen transaksi dan kontrol konkurensi memungkinkan basis data mengeksekusi banyak transaksi konkuren dengan benar dan bertahan dari kegagalan, menjamin properti atomicity, consistency, isolation, dan durability (ACID).
Definition
Transaksi adalah urutan operasi basis data yang dieksekusi sebagai satu unit logis tunggal yang bersifat atomik, menjaga konsistensi, terisolasi dari transaksi konkuren, dan tahan lama setelah dikomit; manajemen transaksi adalah serangkaian mekanisme yang menegakkan properti ini di bawah konkurensi dan kegagalan.
Scope
Area ini mencakup transaksi sebagai unit kerja dan mekanisme yang membuat eksekusi konkuren yang rentan kegagalan menjadi benar: properti ACID; serializabilitas sebagai kriteria kebenaran untuk konkurensi; protokol penguncian, stempel waktu, dan multiversi yang menegakkannya; tingkat isolasi yang lebih lemah yang menukar konsistensi dengan kinerja; dan teknik pencatatan (logging) dan pemulihan (recovery) yang memastikan atomicity dan durability di seluruh kegagalan. Ini tidak termasuk komit terdistribusi di beberapa situs, yang dibahas di area basis data terdistribusi dan paralel.
Sub-topics
Core questions
- Apa yang dijamin oleh properti ACID dan mengapa properti tersebut dibutuhkan?
- Apa yang membuat jadwal konkuren benar, yaitu serializable?
- Bagaimana protokol penguncian, stempel waktu, dan multiversi menegakkan serializabilitas?
- Bagaimana pencatatan (logging) dan pemulihan (recovery) mengembalikan keadaan konsisten setelah kegagalan?
- Bagaimana tingkat isolasi yang lebih lemah menukar konsistensi dengan konkurensi?
Key concepts
- transaksi dan komit/batalkan
- properti ACID
- serializabilitas dan grafik preseden
- penguncian dua fase
- pengurutan stempel waktu
- kontrol konkurensi multiversi
- deteksi dan pencegahan deadlock
- pencatatan tulis-depan (write-ahead logging)
- tingkat isolasi
Key theories
- Properti ACID
- Atomicity (eksekusi semua-atau-tidak sama sekali), consistency (pemeliharaan batasan integritas), isolation (transaksi konkuren tampak berjalan sendiri), dan durability (efek yang dikomit bertahan dari kegagalan) bersama-sama mendefinisikan perilaku transaksional yang benar.
- Serializabilitas
- Jadwal konkuren benar jika setara dengan beberapa eksekusi serial; conflict serializability, yang diuji melalui grafik preseden (serialisasi), adalah kriteria praktis yang ditegakkan oleh protokol kontrol konkurensi.
- Kontrol konkurensi dan pemulihan
- Metode penguncian, pengurutan stempel waktu, dan multiversi mencegah interleaving non-serializable, sementara pencatatan tulis-depan (write-ahead logging) dan algoritma pemulihan menjamin atomicity dan durability, dua bagian dari pemrosesan transaksi yang benar.
Clinical relevance
Manajemen transaksi adalah apa yang membuat basis data dapat dipercaya untuk uang dan catatan: ini memastikan bahwa transfer bank tidak pernah mendebit satu akun tanpa mengkredit akun lain, bahwa maskapai penerbangan tidak pernah memesan ganda kursi di bawah permintaan konkuren, dan bahwa data yang dikomit bertahan dari kegagalan, mendasari semua sistem transaksional yang andal.
History
Konsep transaksi dan properti ACID diformalkan di System R IBM pada tahun 1970-an; Eswaran dan rekan (1976) menetapkan gagasan konsistensi dan penguncian, Jim Gray mendefinisikan transaksi dan pemulihan, dan Bernstein, Hadzilacos, dan Goodman (1987) mensistematisasi teori serializabilitas. Kontribusi Gray terhadap pemrosesan transaksi membuatnya mendapatkan Turing Award.
Key figures
- Jim Gray
- Philip Bernstein
- Andreas Reuter
Related topics
Seminal works
- gray1992
- bernstein1987
- eswaran1976
Frequently asked questions
- Apa artinya jadwal transaksi menjadi serializable?
- Jadwal konkuren bersifat serializable jika efek keseluruhannya identik dengan menjalankan transaksi yang sama satu per satu dalam urutan tertentu. Serializabilitas adalah kriteria kebenaran standar emas: meskipun transaksi saling terkait untuk kinerja, hasilnya seolah-olah telah dieksekusi secara serial, sehingga tidak ada transaksi yang melihat keadaan perantara yang tidak konsisten.
- Mengapa tingkat isolasi yang lebih lemah diizinkan jika dapat menghasilkan anomali?
- Menegakkan serializabilitas penuh memiliki biaya kinerja dalam kontensi kunci dan pembatalan. Banyak aplikasi dapat mentolerir anomali tertentu sebagai ganti konkurensi yang lebih tinggi, sehingga standar SQL mendefinisikan tingkat isolasi yang lebih lemah (read committed, repeatable read, dan sebagainya) yang memungkinkan pengembang secara sengaja menukar beberapa isolasi untuk throughput.