DEFFERED UPDATE
DEFFERED UPDATE adalah untuk menunda atau menunda setiap pembaruan yang sebenarnya ke database sampai transaksi selesai pelaksanaannya sukses dan mencapai titik commit (Catatan 4). Selama eksekusi transaksi, update dicatat hanya dalam log dan dalam buffer cache yang. Setelah transaksi mencapai commit titik dan log adalah force ditulis ke disk, update dicatat dalam database. Jika transaksi gagal sebelum mencapai titik commit, tidak perlu untuk membatalkan operasi apapun, karena transaksi tidak mempengaruhi database pada disk dengan cara apapun. Meskipun hal ini mungkin menyederhanakan pemulihan, tidak dapat digunakan dalam praktek kecuali transaksi yang pendek dan setiap transaksi perubahan beberapa item. Untuk jenis transaksi lainnya, ada potensi untuk kehabisan ruang buffer karena perubahan transaksi harus diadakan di buffer cache yang sampai komit titik.
Kita bisa
menyatakan protokol pembaruan tangguhan khas sebagai berikut:
1 Sebuah transaksi
tidak dapat mengubah database pada disk hingga mencapai titik yang melakukan.
2 Sebuah transaksi
tidak mencapai titik commit sampai semua operasi update yang dicatat dalam log dan
log adalah force ditulis ke disk.
Pemulihan Menggunakan tangguhan Update di Lingkungan
Single-User
PROSEDUR RDU_S:
Gunakan dua daftar transaksi: transaksi berkomitmen sejak pos pemeriksaan
terakhir, dan transaksi aktif (paling banyak satu transaksi akan jatuh dalam
kategori ini, karena sistem ini single-user). Terapkan operasi Redo untuk semua operasi write_item dari transaksi yang
dilakukan dari log dalam urutan di mana mereka ditulis ke log. Restart transaksi aktif.
Redo (WRITE_OP):
Mengulangi sebuah WRITE_OP operasi
write_item terdiri dari
memeriksa entri log [write_item, T,
X, new_value] dan pengaturan nilai barang X dalam database
untuk NEW_VALUE, yang setelah
gambar (Afim).
Operasi Redo diwajibkan untuk idempoten -yaitu
adalah, melaksanakan berulang setara dengan mengeksekusi sekali saja. Bahkan, proses pemulihan
keseluruhan harus idempoten. Hal
ini karena, jika sistem yang gagal selama proses pemulihan, upaya pemulihan
berikutnya mungkin mengulang operasi write_item
tertentu yang sudah direnovasi selama proses pemulihan pertama. Hasil pemulihan dari sistem
crash selama pemulihan harus sama sebagai hasil dari pemulihan ketika
tidak ada kecelakaan selama pemulihan!
Perbarui tangguhan dengan Eksekusi Concurrent dalam
Lingkungan Multiuser
PROSEDUR RDU_M
(dengan poin-poin): Gunakan dua daftar transaksi dikelola oleh sistem:
transaksi berkomitmen T sejak pemeriksaan terakhir (daftar komit),
dan transaksi aktif T (daftar aktif). Redo semua operasi MENULIS transaksi berkomitmen dari
log, dalam urutan di mana mereka ditulis ke dalam log. Transaksi yang
aktif dan tidak melakukan secara efektif dibatalkan dan harus dikirim ulang.
Jika transaksi
dibatalkan untuk alasan apapun (misalnya, dengan metode deteksi kebuntuan), itu
hanya dikirimkan kembali, karena tidak berubah database pada disk. Kelemahan dari metode yang dijelaskan di sini adalah bahwa hal itu
membatasi eksekusi konkuren transaksi karena semua item tetap terkunci
sampai transaksi mencapai titik yang melakukan. Selain itu, mungkin
memerlukan ruang buffer yang berlebihan untuk menampung semua item diperbarui
sampai transaksi berkomitmen. Manfaat utama metode ini
adalah bahwa operasi transaksi tidak perlu dibatalkan, karena dua
alasan:
1 Sebuah transaksi
tidak merekam setiap perubahan dalam database pada disk sampai setelah mencapai
nya komit titik-yaitu, sampai selesai pelaksanaannya berhasil. Oleh karena itu, transaksi tidak pernah digulung kembali karena kegagalan
selama eksekusi transaksi.
2 Sebuah transaksi
tidak akan pernah membaca nilai dari item yang ditulis oleh transaksi tidak
mengikat, karena item tetap terkunci sampai transaksi mencapai titik yang
komit. Oleh karena itu, tidak ada Cascading rollback
akan terjadi.
Tindakan Transaksi Yang Tidak Mempengaruhi Database
Secara umum, transaksi akan memiliki tindakan yang tidak
mempengaruhi database, seperti menghasilkan dan mencetak pesan atau laporan
dari informasi yang diambil dari database. Jika transaksi gagal sebelum selesai, kita mungkin
tidak ingin pengguna untuk mendapatkan laporan ini, karena transaksi telah
gagal untuk menyelesaikan. Jika
laporan yang keliru tersebut diproduksi, bagian dari proses pemulihan harus
menginformasikan pengguna bahwa laporan tersebut salah, karena pengguna dapat
mengambil tindakan berdasarkan laporan-laporan ini yang mempengaruhi database. Oleh karena itu, laporan
tersebut harus dihasilkan hanya setelah transaksi mencapai titik commit.
Metode yang umum untuk menangani tindakan tersebut adalah untuk menjalankan
perintah yang menghasilkan laporan tapi tetap mereka sebagai pekerjaan batch,
yang dijalankan hanya setelah transaksi mencapai nya komit titik. Jika transaksi gagal,
pekerjaan batch dibatalkan.
Konsep:
•
Tidak ada undo transaksi apa pun
diperlukan karena transaksi tidak mempengaruhi database sampai dilakukan
•
Karena semua kunci dilepaskan
hanya setelah komit, tidak ada transaksi dapat membaca elemen data yang sedang
dimodifikasi oleh transaksi lain
•
Oleh karena itu tidak ada
kemungkinan rollbacks Cascading
•
Namun, operasi disk berpotensi
berat selama komit.
IMMEDIETED
UPDATE
Ide umum:
1.
Database diperbarui oleh
transaksi dan ketika mereka mengeksekusi.
2.
Update database dilakukan setelah
update dicatat dalam log dan log ditulis ke disk (tidak-perlu memaksa ditulis).
3.
Membatalkan semua transaksi yang
belum selesai sejak pemeriksaan terakhir.
4.
Redo semua transaksi yang
dilakukan sejak pemeriksaan terakhir.
Undo Operasi
•
Perlu dilakukan untuk semua
transaksi yang belum selesai
•
Log masuk untuk menulis:
-
[Write_item, T, X, OLD_VALUE,
new_value]
•
Urungkan operasi dilakukan
dengan membaca log dalam urutan terbalik.
•
Log entri dirancang sedemikian
rupa sehingga membatalkan dan mengulang operasi adalah idempoten.
UNDO / REDO
Pemulihan Berdasarkan Segera Update di Lingkungan Single-User
PROSEDUR RIU_S
1.Gunakan dua daftar
transaksi dikelola oleh sistem: transaksi berkomitmen sejak pemeriksaan
terakhir dan transaksi aktif (paling banyak satu transaksi akan jatuh dalam
kategori ini, karena sistem ini single-user).
2 Undo semua operasi
write_item dari transaksi aktif dari log, dengan menggunakan prosedur
UNDO dijelaskan di bawah ini.
3 Redo operasi
write_item dari transaksi yang dilakukan dari log, dalam urutan di mana
mereka ditulis dalam log, dengan menggunakan prosedur Redo dijelaskan
sebelumnya.
Prosedur UNDO
didefinisikan sebagai berikut:
UNDO (WRITE_OP):
Membatalkan sebuah WRITE_OP operasi write_item terdiri dari memeriksa entri log
[write_item, T, X, OLD_VALUE, new_value] dan pengaturan nilai barang X
dalam database untuk OLD_VALUE yang merupakan gambar sebelum (BFIM). Membatalkan sejumlah operasi write_item dari satu atau lebih transaksi
dari log harus melanjutkan dalam urutan terbalik dari urutan operasi
ditulis dalam log.
Langkah
Gunakan dua daftar
transaksi: daftar semua transaksi yang dilakukan sejak pemeriksaan terakhir
dan, daftar semua transaksi aktif sejak pos pemeriksaan terakhir
Undo menulis semua
transaksi aktif menggunakan kebijakan undo
Redo operasi menulis
semua transaksi yang dilakukan
Menyerahkan semua
transaksi aktif kembali ke DBMS
UNDO
/ REDO Pemulihan Berdasarkan Perbarui Segera Eksekusi dengan Concurrent
PROSEDUR RIU_M
1.Gunakan dua daftar
transaksi dikelola oleh sistem: transaksi berkomitmen sejak pemeriksaan
terakhir dan transaksi aktif.
2 Undo semua operasi
write_item dari aktif (uncommitted) transaksi, menggunakan prosedur
UNDO. Operasi harus dibatalkan dalam kebalikan dari
urutan di mana mereka ditulis ke dalam log.
3 Redo semua operasi
write_item dari transaksi yang dilakukan dari log, dalam urutan di mana
mereka ditulis ke dalam log.
Langkah
Gunakan 2PL ketat
sehingga tidak ada kunci dilepaskan sampai transaksi berkomitmen.
•
Gunakan dua daftar transaksi:
transaksi yang dilakukan dan aktif sejak pemeriksaan terakhir
•
Undo menulis semua transaksi
aktif menggunakan kebijakan undo
•
Redo operasi menulis semua
transaksi yang dilakukan
•
Melepaskan kunci dan menyerahkan
semua transaksi aktif kembali ke DBMS
0 komentar:
Posting Komentar