NIM : 1944390011
CONCURRENCY CONTROL
A. Concurrency Control
Concurrency control merupakan proses pengaturan ooperasi yang simultan pada database tanpa
menyebabkan saling mempengaruhi antara satu dengan yang lain. Akses konkuren tidak akan
bermasalah jika user hanya melakukan pembacaan data saja, gangguan akan terjadi jika dua atau
lebih user mengakses database secara simultan dan sedikitnya melakukan suatu perubahan
(update), maka dapat menyebabkan ketidak-konsistenan (inconsistencies).
Walaupun masing-masing transaksi tersebut secara terpisah benar, tetapi secara keseluruhan
akan menghasilkan output yang salah. Terdapat tiga masalah potensial yang disebabkan oleh
concurrency, yaitu:
Sebuah transaksi kedua menulis nilai kedua dari data-item (datum) di atas nilai pertama yang
ditulis oleh transaksi konkuren pertama, dan nilai pertama hilang untuk transaksi lainnya berjalan
bersamaan yang membutuhkan, dengan prioritas mereka, untuk membaca nilai pertama.
Transaksi yang telah membaca akhir nilai yang salah dengan hasil yang salah.
Transaksi membaca nilai yang ditulis oleh transaksi yang telah kemudian dibatalkan. Nilai ini
menghilang dari database pada abort, dan tidak seharusnya dibaca oleh setiap transaksi
("membaca kotor"). Pembacaan transaksi diakhiri dengan hasil yang salah.
Ketika satu transaksi mengambil ringkasan atas nilai dari semua contoh item-data ulang, sebuah
update transaksi kedua beberapa kasus itu barang-data. Ringkasan yang dihasilkan tidak
mencerminkan hasil yang benar untuk setiap (biasanya diperlukan untuk pembenaran) agar
mengutamakan antara dua transaksi (jika dijalankan sebelum yang lain), melainkan beberapa
hasil acak, tergantung pada waktu update, dan apakah tertentu Hasil update telah dimasukkan
dalam ringkasan atau tidak.
Concurrency control dalam sistem manajemen database, lain transaksional benda, dan aplikasi
terdistribusi yang terkait (misalnya, komputasi Grid dan Cloud computing ) memastikan
bahwa database transaksi dilakukan bersamaan tanpa melanggar integritas data dari masing-
masing database . Jadi kontrol concurrency merupakan elemen penting untuk pembenaran dalam
sistem dimana transaksi basis data dua atau lebih, dilaksanakan dengan waktu tumpang tindih,
dapat mengakses data yang sama, misalnya, hampir di setiap sistem database untuk tujuan
umum. Akibatnya tubuh besar penelitian terkait telah terakumulasi karena sistem database yang
telah muncul pada awal tahun 1970. Sebuah didirikan concurrency dengan baik kontrol teori
untuk sistem database diuraikan dalam referensi disebutkan di atas: serializability teori , yang
memungkinkan untuk secara efektif desain dan menganalisis metode kontrol concurrency dan
mekanisme. Sebuah teori alternatif untuk mengontrol concurrency transaksi atom lebih dari tipe
data abstrak, dan tidak digunakan di bawah ini. Teori ini lebih halus, dengan lingkup yang lebih
luas, namun kurang digunakan dalam literatur Database dari teori klasik di atas. Teori Masing-
masing memiliki kelebihan dan kontra, penekanan dan wawasan . Untuk beberapa hal mereka
saling melengkapi, dan penggabungan mereka mungkin berguna.
Arti Transaksi : “Sebuah transaksi adalah unit eksekusi program yang mengakses dan mungkin
mengubah beberapa item data”. Dalam Konsep transaksi di database harus di penuhi empat sifat
database agar integritas database tetap terjaga. Adapun keempat sifat tersebut adalah :
· Atomicity: Setiap transaksi harus dijamin untuk dapat sukses dalam melakukan aksinya
atau jika gagal , maka tidak berpengaruh apapun terhadap database.
· Consistency: Setiap transaksi adalah sebuah aksi kombinasi secara logikal dari sebuah
state database yang konsisten ke state yang lain dengan tetap menjaga kekonsisten-an database
tersebut.
Tujuan dari scheduler adalah memaksimalkan concurrency tanpa memungkinkan transaksi yang
sedang dieksekusi untuk mempengaruhi / saling mempengaruhi dengan transaksi lainnya. Jika
terjadi kegagalan, maka database dapat menjadi tidak konsisten. Hal tersebut merupakan tugas
bagi recovery manager untuk memastikan database dikembalikan ke saat sebelum dilakukannya
transaksi.
Akhirnya, buffer manager bertanggung jawab untuk mengirimkan data antar penyimpanan disk
dengan main memory.
E. Serializability dan Recoverability
F. Schedule
Schedule adalah sebuah urutan dari operasi-operasi oleh satu set transaksi yang jalan bersamaan
yang menjaga urutan operasi pada setiap transaksi individual. Sebuah transaksi mencakup sebuah
urutan operasi yang terdiri dari tindakan baca dan/atau tulis pada database, diikuti oleh sebuah
tindakan commit atau abort. Sebuah schedule S terdiri dari sebuah urutan operasi dari
sekumpulan n transaksi T1, T2, … Tn, bergantung pada constraint yang dilindungi oleh urutan
operasi untuk setiap transaksi pada schedule tersebut. Jadi, untuk setiap transaksi Ti
pada schedule S, urutan operasi pada Ti harus sama dengan schedule S. Serial Schedule adalah
sebuah schedule di mana operasi dari setiap transaksi dijalankan secara berurutan tanpa adanya
tarnsaksi yang mengganggu transaksi lainnya. NonSerial Schedule adalah sebuah schedule di
mana operasi-operasi dari satu set concurrent transactions mengalami interleaved. Pada
sebuah serial schedule, transaksi dijalankan pada serial order. Contohnya, jika kita mempunyai
dua transaksi T1 dan T2, serial ordernya akan menjadi T1 diikuti oleh T2, atau T2 diikuti oleh
T1. Lalu, pada eksekusi serial tidak ada interferensi antara transaksi, karena hanya satu transaksi
yang berjalan pada satu waktu. Tujuan serializibility adalah untuk menemukan non serial
schedule yang mengijinkan transaksi untuk berjalan secara bersamaan tanpa mengganggu satu
sama lain, dan kemudian memproduksi sebuah state database yang dapat diproduksi oleh sebuah
eksekusi serial. Jika sebuah set transaksi berjalan secara bersamaan, bisa dikatakan
bahwa schedule (nonserial) adalah benar jika memproduksi hasil yang sama seperti beberapa
eksekusi serial lainnya. Schedule seperti itu disebut serializable. Untuk mencegah inkonsistensi
dari transaksi yang mengganggu satu sama lain, penting untuk menjamin serializability dari
transaksi yang jalan bersamaan.
Pada serializability, urutan operasi baca dan tulis itu penting. Berikut ini hal – hal yang perlu
diperhatikan:
· Jika dua transaksi hanya membaca satu item data yang sama, dua transaksi tersebut tidak
mengalami konflik dan urutan menjadi tidak penting.
· Jika dua transaksi melakukan operasi membaca ataupun menulis pada item data yang
berbeda, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
· Jika satu transaksi menulis sebuah item data dan transaksi lain baik membaca ataupun
menulis pada item data yang sama, maka urutan eksekusi itu menjadi penting.
Ada dua teknik concurrency control utama yang mengijinkan transaksi untuk berjalan dengan
aman dalam subjek paralel untuk constraint tertentu, yaitu locking dan
metode timestamp tertentu. Locking dan timestamping adalah pendekatan konservatif karena
mereka menyebabkan transaksi ditunda dalam kasus mereka konflik dengan transaksi lain pada
beberapa waktu di masa yang akan datang. Metode optimistik, didasarkan pada premis bahwa
konflik itu jarang ditemui, jadi mereka mengijinkan transaksi untuk lanjut tidak tersinkronisasi
dan hanya mengecek konflik di bagian akhir, ketika transaksi melakukan operasi commit.
H. Metode Locking
Locking adalah sebuah prosedur yang digunakan untuk mengendalikan akses bersamaan ke data.
Ketika sebuah transaksi sedang mengakses database, sebuah lock mungkin menolak akses ke
transaksi lain untuk mencegah hasil yang salah. Ada dua macam lock, yaitu shared
lock dan exclusive lock yang harus digunakan sebelum melakukan akses membaca ataupun
menulis terhadap database. Penggunaan lock ini adalah untuk menjaga konsistensi data didalam
database. Jika sebuah transaksi mempunyai sebuah shared lock pada sebuah item data, transaksi
tersebut dapat membaca item tapi tidak dapat mengubah datanya. Jika sebuah transaksi
mempunyai sebuah exclusive lock pada sebuah item data, transaksi tersebut dapat membaca dan
mengubah item data.
· Transaksi apapun yang membutuhkan akses pada sebuah item data harus
melakukan lock terhadap item tersebut, meminta shared lock untuk akses membaca saja atau
sebuah exclusive lock untuk akses membaca dan menulis.
Two Phase Locking adalah sebuah transaksi yang mengikuti protocol two-phase locking jika
semua operasi locking mendahului operasi unlock pertama pada transaksi.
· Sebuah transaksi harus mendapatkan sebuah lock pada item sebelum beroperasi pada item
tersebut. Lock tersebut bisa berupa baca atau tulis, tergantung dari tipe akses yang dibutuhkan
3. Deadlock
Deadlock adalah jalan buntu yang dapat terjadi ketika dua atau lebih transaksi masing-masing
menunggu lock yang sedang dipegang oleh transaksi lainnya untuk dilepas. Hanya ada satu cara
untuk menghancurkan deadlock, yaitu abort satu atau lebih transaksi. Ada tiga cara untuk
menangani deadlock, yaitu timeout, deadlock prevention dan deadlock detection and recovery.
4. Timeout
5. Deadlock Prevention
6. Deadlock Detection
WFG adalah sebuah directed graph G = (N, E ) yang terdiri dari satu set node N dan satu
set directed edge E, yang dikonstruksi sebagai berikut