Professional Documents
Culture Documents
PERTEMUAN 3
TEKNIK RECOVERY
PENDAHULUAN
Konsep transaksi menyediakan suatu
mekanisme untuk menggambarkan unit logika dari proses database. Sistem pemrosesan transaksi merupakan sistem dengan database yang besar dan ribuan concurrent user yang mengeksekusi transaksi database.
PENDAHULUAN
DBMS adalah single-user jika paling banyak satu user yang dapat menggunakan sistem satu saat, dan multiuser jika banyak user dapat menggunakan sistem, dan kemudian mengakses database bersamaan. Single-user DBMS kebanyakan terbatas pada beberapa sistem mikro komputer, selain itu multiuser.
TRANSAKSI
Transaksi merupakan unit logika dari proses
database yang mencakup satu atau lebih operasi pengaksesan database meliputi insert, delete, modifikasi atau operasi retrieve. Operasi database ini dapat disisipkan dalam suatu program aplikasi atau dapat langsung dibuat interaktif dengan bahasa query level tinggi misal SQL.
TRANSAKSI
Satu cara untuk menspesifikasikan batasan
transaksi adalah dengan membuat statemen begin transaction dan end transaction dalam program aplikasi; Pada kasus ini semua operasi yang mengakses database di antara statemen begin-end dianggap sebagai sebuah transaksi.
TRANSAKSI
Sebuah program aplikasi dapat berisi lebih
dari satu transaksi jika berisi beberapa batasan transaksi. Jika operasi database dalam suatu transaksi tidak meng-update database tetapi hanya mengambil (retrieve) data, transaksinya disebut dengan read-only transaction.
berakhir sukses sehingga semua perubahan (update) yang dilakukan melalui transaksi dapat dimasukkan ke database dan akan diselesaikan ROLLBACK (or ABORT) : transaksi berakhir dengan tidak sukses sehingga semua perubahan atau efek transaksi yang diaplikasikan ke database tidak dapat diselesaikan.
KONSEP RECOVERY
Recovery basis data merupakan suatu
proses penyimpanan kembali basis data pada keadaan yang benar sebelum terjadi kegagalan(failure). Recovery dari suatu kegagalan transaksi biasanya berarti database direstore ke status yang konsisten ke waktu sebelum terjadi kegagalan.
KONSEP RECOVERY
Untuk mengcover kesalahan atau kegagalan
dari transaksi, sistem memaintain sebuah log untuk menjaga jalannya semua operasi yang mempengaruhi nilai dari item database. Informasi ini mungkin akan dibutuhkan untuk mengcover adanya kegagalan. LOG disimpan di storage, dan secara berkala diback-up ke storage lainnya untuk menjaga dari kerusakan yang fatal.
PENYEBAB KEGAGALAN
System crash (kerusakan sistem), akibat kesalahan
media tidak dapat dibaca, menyebabkan kehilangan sebagian dari penyimpanan sekunder
Application software error (kesalahan pada
perangkat lunak aplikasi, seperti kesalahan logika yg mengakses basis data menyebab kan satu atau lebih transaksi mengalami kegagalan
13
natural), seperti kebakaran, air bah, gempa Carelessness (kekurangtelitian atau kerusakan pada data atau fasilitas yg tidak disengaja disebabkan oleh operator atau pengguna) Sabotase, kerusakan pada data, fasilitas perangkat lunak & keras yg disengaja
14
melakukan backup secara periodik terhadap basis data yg ada Fasilitas Logging Mencatat transaksi-transaksi dan perubahan-perubahan yang terjadi terhadap basis data. DBMS memelihara file khusus yang disebut Log (Journal) yang menyediakan informasi mengenai seluruh perubahan yang terjadi pada basis data. Fasilitas Checkpoint Mengizinkan update terhadap basis data yang akan menjadi basis data yang permanen Manager recovery Mengizinkan sistem untuk menyimpan kembali basis data ke keadaan sebelum terjadi kegagalan
15
TEKNIK RECOVERY
Prosedur recovery yang digunakan tergantung dari
kegagalan yang terjadi pada basis data. Terdapat 2 kasus kerusakkan : 1. Jika basis data rusak secara fisik seperti : disk head
crash dan menghancurkan basis data, maka yang terpenting adalah melakukan penyimpanan kembali backup basis data yang terakhir dan mengaplikasikan kembali operasi-operasi update transaksi yang telah commit dengan menggunakan log file. Dengan asumsi bahwa log file-nya tidak rusak.
16
KONSEP RECOVERY
Ada 2 teknik utama dalam melakukan recovery kesalahan transaksi : 1. Deferred update 2. Immediate update
Deferred/Tunda Update
Menunda update yang sesungguhnya ke
basis data sampai transaksi menyelesaikan eksekusinya dengan sukses dan mencapai titik commit. Selama eksekusi masih berlangsung update hanya dicatat pada system log dan transaction workspace. Setelah transaksi commit dan log sudah dituliskan ke disk, maka update dituliskan ke basis data
Deferred Update
Ide dari protocol update yang tertunda :
database pada disk hingga mencapai titik point 2. Sebuah transaksi tidak dapat mencapai titik point hingga semua operasi update disimpan dalam log dan ditulis ke disk
Deferred Update
Karena database tidak pernah ter-update
pada disk hingga transaksi mencapai commit, operasi UNDO tidak diperlukan. Operasi ini dikenal dengan algoritma recovery NO UNDO/ REDO. REDO dibutuhkan saat sistem gagal setelah transaksi mencapai commit tetapi sebelum perubahan disimpan pada database di disk.
sampai ke awal dari log Buat list dari transaksi yang sudah commit dan yang belum commit Lakukan operasi REDO dari semua operasi write_item dari transaksi yg sudah commit, dengan urutan seperti tertulis pada log Abaikan semua operasi dari transaksi yang belum commit implicit rollback Transaksi yg belum commit akan diresubmit kembali ke sistem
transaksi T2 (gambar b). Proses recovery akan redo [write_item,T1,D,20] pada log dengan mereset nilai dari item D menjadi 20 (nilai barunya). Entri [write_item,T2,] pada log akan ditiadakan oleh proses recovery karena T2 tidak commit. Jika kegagalan kedua terjadi selama recovery dari kegagalan pertama, proses recovery yang sama diulang dari awal hingga akhir dengan hasil yang sama.
berhubungan. Secara umum, semakin besar tingkat konkurensi dicapai, semakin banyak waktu untuk recovery.
gunakan 2 daftar transaksi yang dikelola oleh sistem; transaksi T commit T sejak checkpoint terakhir (daftar commit), dan transaksi aktif T (daftar aktif). Redo semua operasi WRITE dari transaksi yang commit dari log, dalam urutan yang ditulis ke dalam log. Transaksi yang aktif dan tidak commit secara efektif dibatalkan dan harus di-submite kembali. Recovery menggunakan Deferred Update dalam lingkungan multi-user = RDU_M
dimana T3 dan T4 belum. Sebelum terjadi sistem crash pada t2 , T3 dan T2 commit tetapi tidak untuk T4 dan T5. Berdasarkan prosedur RDU_M, tidak dibutuhkan operasi REDO write_item dari transaksi T1 atau transaksi commit lainnya sebelum waktu checkpoint yang terakhir dari t1.
diulang karena kedua transaksi mencapai titik commit setelah checkpoint yang terakhir. Log bersifat force-written sebelum suatu transaksi commit. Transaksi T4 dan T5 diabaikan, secara efektif ditunda atau rolled back karena operasi write_item disimpan dalam database karena deferred update.
UNDO/REDO adalah operasi transaksi tidak pernah dibutuhkan untuk tidak jadi dilaksanakan, karena : 1. Transaksi tidak mencatat setiap perubahan dalam database pada disk sampai mencapai point commit, yaitu sampai menyelesaikan eksekusi secara lengkap. Sehingga transaksi tidak pernah dirolled back karena kesalahan selama eksekusi transaksi. 2. Transaksi tidak akan pernah membaca nilai yang ditulis oleh transaksi yang belum commit karena item tetap terkunci sampai transaksi mencapai titik commit.
T2
read_item(B) write_item(B) read_item(D) write_item(D)
T3
read_item(A) write_item(A) read_item(C) write_item(C)
T4
read_item(B) write_item(B) read_item(A) write_item(A)
mencapai commit points mereka. T4 adalah redone karena commit point-nya setelah system checkpoint terakhir.
tanpa menunggu transaksi mencapai titik commit Operasi tetap harus dituliskan ke log (pada disk) sebelum update dilakukan pada basis data Write-Ahead Logging protocol
commit dan list transaksi yang belum commit UNDO semua operasi write_item dari transaksi yang belum commit REDO semua operasi write_item dari transaksi yang sudah commit sesuai dengan urutan yang tertulis pada log Dapat ditambahkan checkpoint
dan belum commit setelah checkpoint terakhir ditulis Buat list transaksi yg sudah commit yang membaca data item dari transaksi yang belum commit untuk cascading rollback UNDO semua transaksi yg belum commit dan transaksi yang harus di-rollback REDO semua operasi write_item yang berasal dari transaksi yang sudah commit.
Kerugian
disk Buat page table di memory dengan jumlah entry yang sama dengan jumlah disk page Shadow page table adalah copy dari current page table yang disimpan di disk Selama transaksi berlangsung current page table diupdate, sedangkan shadow page table tidak dimodifikasi
dari basis data yang akan dimodifikasi dibuat Current page table dimodifikasi untuk menunjuk pada disk page yang baru, sedangkan shadow page lama tetap menunjuk pada disk blok yang lama Bila proses commit sukses, maka shadow page table akan dihapus Bila proses commit gagal, maka status basis data sebelum transaksi bisa diperoleh dari shadow page table
Shadow Paging
AFIM tidak menimpa BFIMnya tetapi disimpan pada tempat lain di disk. Sehingga, setiap saat sebuah item data memiliki AFIM dan BFIM (Shadow copy dari item data) pada dua tempat yang berbeda di disk.
Y X' Database
Y'
X dan Y: Shadow copies dari item data X` dan Y`: Current copies dari item data
Shadow Paging
Untuk mengatur akses item data dengan konkuren dua direktori transaksi (current dan shadow) yang digunakan. Susunan direktori digambarkan di bawah ini. Halaman berikut merupakan item data.
Current Directory (after updating pages 2, 5) 1 2 3 4 5 6 Page 5 (old) Page 1 Page 4 Page 2 (old) Page 3 Page 6 Page 2 (new) Page 5 (new) Shadow Directory (not updated) 1 2 3 4 5 6
Checkpoints
Dalam hal kegagalan, manajer pemulihan
mensyaratkan bahwa seluruh log diperiksa untuk memproses pemulihan memakan waktu.
Cara cepat untuk membatasi jumlah log untuk memindai pada proses recovery dapat dicapai dengan menggunakan checkpoints.
secara berkala pada saat sistem menulis ke database pada disk semua buffer DBMS yang telah dimodifikasi.
Checkpoints
Oleh karena itu, semua transaksi dengan
entri [commit, T] dalam log sebelum entri [checkpoint] tidak perlu melakukan kembali proses WRITE dalam kasus crash.
Karena semua pembaruan mereka telah tercatat dalam DB pada disk selama proses checkpoint.
Checkpoints
Interval diukur dalam waktu, katakanlah
setiap m menit. Atau interval diukur dalam jumlah transaksi yang dilakukan sejak checkpoint terakhir, misalnya transaksi t. - M & t adalah parameter sistem
Checkpoints
Proses checkpoint adalah sebagai berikut
1. Suspend/menunda eksekusi transaksi sementara. 2. Memaksa menulis semua buffer memori utama yang telah dimodifikasi ke disk. 3. Menulis catatan [checkpoint] ke log, dan memaksa-menulis log ke disk. 4. Lanjutkan mengeksekusi transaksi.
Checkpoints
Waktu yang dibutuhkan untuk memaksa-menulis
keterlambatan ini. - Sistem dapat melanjutkan proses transaksi setelah catatan [checkpoint] tertulis ke log tanpa harus menunggu langkah 2 sampai akhir.
Checkpoints
- Namun, sampai langkah 2 selesai, catatan [chekpoint] sebelumnya harus tetap berlaku.
Sistem ini menjaga pointer ke checkpoint yang valid yang menunjuk ke [checkpoint] sebelumnya mencatat log
- Setelah dilakukan step 2, pointer diubah untuk menunjuk ke checkpoint baru dalam log.