DBMS - Transaksi

Transaksi dapat didefinisikan sebagai sekelompok tugas. Satu tugas adalah unit pemrosesan minimum yang tidak dapat dibagi lebih jauh.

Mari kita ambil contoh transaksi sederhana. Misalkan seorang pegawai bank mentransfer Rs 500 dari rekening A ke rekening B. Transaksi yang sangat sederhana dan kecil ini melibatkan beberapa tugas tingkat rendah.

A’s Account

Open_Account(A)
Old_Balance = A.balance
New_Balance = Old_Balance - 500
A.balance = New_Balance
Close_Account(A)

B’s Account

Open_Account(B)
Old_Balance = B.balance
New_Balance = Old_Balance + 500
B.balance = New_Balance
Close_Account(B)

Properti ACID

Transaksi adalah unit program yang sangat kecil dan mungkin berisi beberapa tugas tingkat rendah. Transaksi dalam sistem database harus dipertahankanAtomicity, Ckonsistensi, Isolasi, dan Durabilitas - umumnya dikenal sebagai properti ACID - untuk memastikan keakuratan, kelengkapan, dan integritas data.

  • Atomicity- Properti ini menyatakan bahwa transaksi harus diperlakukan sebagai unit atom, artinya, semua operasinya dijalankan atau tidak sama sekali. Tidak boleh ada status dalam database di mana transaksi dibiarkan selesai sebagian. Negara harus didefinisikan baik sebelum eksekusi transaksi atau setelah eksekusi / aborsi / kegagalan transaksi.

  • Consistency- Basis data harus tetap dalam keadaan konsisten setelah transaksi apa pun. Tidak ada transaksi yang berdampak buruk pada data yang berada di database. Jika database berada dalam keadaan konsisten sebelum eksekusi transaksi, database juga harus tetap konsisten setelah eksekusi transaksi.

  • Durability- Basis data harus cukup tahan lama untuk menampung semua pembaruan terkini bahkan jika sistem gagal atau dimulai ulang. Jika suatu transaksi memperbarui sebagian data dalam database dan melakukan, maka database akan menyimpan data yang dimodifikasi. Jika transaksi dilakukan tetapi sistem gagal sebelum data dapat ditulis ke disk, maka data tersebut akan diperbarui setelah sistem kembali beraksi.

  • Isolation- Dalam sistem basis data di mana lebih dari satu transaksi dieksekusi secara bersamaan dan paralel, properti isolasi menyatakan bahwa semua transaksi akan dilakukan dan dieksekusi seolah-olah itu adalah satu-satunya transaksi dalam sistem. Tidak ada transaksi yang akan mempengaruhi keberadaan transaksi lainnya.

Serializability

Ketika banyak transaksi sedang dieksekusi oleh sistem operasi dalam lingkungan multiprogramming, ada kemungkinan bahwa instruksi dari satu transaksi disisipkan dengan beberapa transaksi lainnya.

  • Schedule- Urutan eksekusi kronologis dari suatu transaksi disebut jadwal. Jadwal dapat memiliki banyak transaksi di dalamnya, masing-masing terdiri dari sejumlah instruksi / tugas.

  • Serial Schedule- Ini adalah jadwal di mana transaksi diselaraskan sedemikian rupa sehingga satu transaksi dieksekusi terlebih dahulu. Ketika transaksi pertama menyelesaikan siklusnya, maka transaksi berikutnya dijalankan. Transaksi dipesan satu demi satu. Jenis jadwal ini disebut jadwal serial, karena transaksi dijalankan secara serial.

Dalam lingkungan multi-transaksi, jadwal serial dianggap sebagai patokan. Urutan eksekusi dari sebuah instruksi dalam sebuah transaksi tidak dapat diubah, tetapi dua transaksi dapat memiliki instruksinya dieksekusi secara acak. Eksekusi ini tidak merugikan jika dua transaksi saling independen dan bekerja pada segmen data yang berbeda; tetapi jika kedua transaksi ini bekerja pada data yang sama, maka hasilnya mungkin berbeda. Hasil yang selalu berubah ini dapat membuat database menjadi tidak konsisten.

Untuk mengatasi masalah ini, kami mengizinkan eksekusi paralel dari jadwal transaksi, jika transaksinya dapat berseri atau memiliki beberapa hubungan ekivalen di antara mereka.

Jadwal Kesetaraan

Jadwal kesetaraan dapat dari jenis berikut -

Hasil Kesetaraan

Jika dua jadwal menghasilkan hasil yang sama setelah eksekusi, keduanya dikatakan setara hasil. Mereka mungkin menghasilkan hasil yang sama untuk beberapa nilai dan hasil yang berbeda untuk kumpulan nilai lainnya. Itulah mengapa kesetaraan ini umumnya tidak dianggap signifikan.

Lihat Kesetaraan

Dua skedul akan menjadi ekuivalen tampilan jika transaksi di kedua skedul tersebut melakukan tindakan serupa dengan cara yang serupa.

Misalnya -

  • Jika T membaca data awal di S1, maka T membaca juga data awal di S2.

  • Jika T membaca nilai yang ditulis oleh J di S1, maka T membaca nilai yang ditulis oleh J di S2.

  • Jika T melakukan penulisan akhir pada nilai data di S1, maka T juga melakukan penulisan akhir pada nilai data di S2.

Kesetaraan Konflik

Dua jadwal akan bentrok jika mereka memiliki properti berikut -

  • Keduanya termasuk dalam transaksi terpisah.
  • Keduanya mengakses item data yang sama.
  • Setidaknya salah satunya adalah operasi "tulis".

Dua jadwal yang memiliki banyak transaksi dengan operasi yang saling bertentangan dikatakan setara konflik jika dan hanya jika -

  • Kedua jadwal tersebut berisi rangkaian Transaksi yang sama.
  • Urutan pasangan operasi yang berkonflik dipertahankan di kedua jadwal.

Note- Lihat jadwal yang setara melihat serializable dan konflik jadwal setara konflik serializable. Semua konflik jadwal serializable juga dapat dilihat.

Status Transaksi

Transaksi dalam database bisa berada di salah satu status berikut -

  • Active- Dalam keadaan ini, transaksi sedang dijalankan. Ini adalah status awal setiap transaksi.

  • Partially Committed - Ketika sebuah transaksi menjalankan operasi akhirnya, ia dikatakan berada dalam status komitmen sebagian.

  • Failed- Transaksi dikatakan gagal jika salah satu pemeriksaan yang dilakukan oleh sistem pemulihan database gagal. Transaksi yang gagal tidak dapat melanjutkan lebih jauh.

  • Aborted- Jika salah satu pemeriksaan gagal dan transaksi telah mencapai status gagal, maka manajer pemulihan mengembalikan semua operasi tulisnya pada database untuk mengembalikan database ke keadaan semula sebelum transaksi dijalankan. Transaksi di negara bagian ini disebut dibatalkan. Modul pemulihan database dapat memilih salah satu dari dua operasi setelah transaksi dibatalkan -

    • Mulailah kembali transaksi
    • Hentikan transaksi
  • Committed- Jika transaksi menjalankan semua operasinya dengan sukses, itu dikatakan telah dilakukan. Semua efeknya sekarang ditetapkan secara permanen pada sistem database.