SlideShare a Scribd company logo
1 of 25
Concurrency
Endah Nursalehah
Intan Permatasari
Nuruly Firdausi
Syifa Nurul Fauziah

by :
1200212
1205415
1205900
1201734
Concurrency Control

Jika pada suatu sistem basis data terdapat sejumlah
transaksi yang terjadi secara bersamaan , maka
transaksi tersebut harus dapat dieksekusi dan
konsistensi basis data dapat tetap terpelihara.
mekanisme pengendalian konkurensi (concurency
control) berlandaskan pada prinsip-prinsip serializability.
yaitu transaksi dilakukan secara berurutan/serial.
Concurrency control

• Concurrency control adalah proses pengaturan operasi–
operasi dalam banyak transaksi yang berjalan secara
simultan pada database tanpa mengganggu operasi
pada transaksi lainnya sehingga dapat menghasilkan
data yang konsisten ( Connolly, 2005, p577 ).
Masalah Penting dalam Concurrency

Lost-Update
Lost-Update

Uncommited
Uncommited
Dependency (dirty read)
Dependency (dirty read)

Inconsistent Analysis
Inconsistent Analysis
Masalah Penting dalam Concurrency

Lost-Update (1)

T1

Time
T1

T2

balx

Begin_transaction 100

T2

Begin_transaction

read(balx)

100

T3

read(balx)

balx = balx + 100

100

T4

balx = balx - 100

write(balx)

200

T5

write(balx)

commit

90

T6

commit

90
Masalah Penting dalam Concurrency

Lost-Update (2)

Penjelasan :
Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan
keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan
menyimpan hasil perubahannya dalam database.
Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan
menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan
akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam
saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah
T¬1 membaca nilai dari bal x sampai update T2 telah selesai.
Masalah Penting dalam Concurrency (1)

T1

Time

T2

balx

T1

Begin_transaction

100

T2

read(balx)

100

T3

balx = balx + 100

100

T4

Begin_transaction

write(balx)

200

T5

read(balx)

...

200

T6

balx = balx - 100

rollback

100

T7

write(balx)

190
Masalah Penting dalam Concurrency (2)

Penjelasan :
Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan
keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan
menyimpan hasil perubahannya dalam database.
Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan
menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan
akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam
saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T¬1
membaca nilai dari bal x sampai update T2 telah selesai.
Masalah Penting dalam Concurrency

Inconsistent Analysis(1)

Masalah inconsistent analysis muncul ketika sebuah
transaksi membaca beberapa nilai dari database tapi
transaksi kedua mengubah beberapa darinya ketika
eksekusi transaksi yang pertama.
Masalah Penting dalam Concurrency

Inconsistent Analysis(3)
T1

Time
T1

T2

balx

baly

balz

begin_tran

100

50

sum

25

T2

begin_tran

sum = 0

100

50

25

0

T3

read(balx)

read(balz)

100

50

25

0

T4

bal x = bal x - 10

sum = sum + balz

100

50

25

100

T5

write(balx)

read(baly)

90

50

25

100

T6

read(balz)

sum = sum + baly

90

50

25

150

T7

balz = balz + 10

90

50

25

150

T8

write(balz)

90

50

35

150

T9

commit

read(balz)

90

50

35

150

T10

sum = sum + balz

90

50

35

185

T11

commit

90

50

35

185
Masalah Penting dalam Concurrency

Inconsistent Analysis(2)

Sebuah transaksi yang meringkas data pada sebuah
database (contohnya, saldo total) akan mendapat hasil
yang tidak akurat jika, ketika berjalan, transaksi lain sedang
mengubah database.
Pada contoh tersebut, ringkasan transaksi T6 sedang
berjalan secara bersamaan dengan transaksi T5. Transaksi
T6 sedang menjumlahkan saldo rekening x ($100),
rekening y ($50), dan rekening z($25). Namun, di tengah
jalan, transaksi T5 telah mentransfer $10 dari balx ke
bal¬z, sehingga T6 sekarang mempunyai hasil yang salah
(lebih besar $10).
Serializability dan Recoverability

• Tujuan protokol concurrency control adalah untuk
menjadwalkan transaksi sedemikian rupa sehingga
dapat menghindar dari berbagai gangguan, dan juga
mencegah tipe-tipe masalah yang digambarkan pada
sesi sebelumnya.
Schedule
• Schedule adalah sebuah urutan dari operasi-operasi oleh satu
set transaksi yang jalan bersamaan yang menjaga urutan
operasi pada setiap transaksi individual ( Connolly, 2005,
p580 ).
• 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.
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 ( Connolly, 2005, p587 ).
Penggunaan lock ini adalah untuk menjaga konsistensi
data didalam database.
Shared Lock

• Jika sebuah transaksi mempunyai sebuah shared lock pada
sebuah item data, transaksi tersebut dapat membaca item tapi
tidak dapat mengubah datanya ( Connolly, 2005, p588 ).
Exclusive Lock
Jika sebuah transaksi mempunyai sebuah
exclusive lock pada sebuah item data, transaksi
tersebut dapat membaca dan mengubah item
data
( Connolly, 2005, p588 ).
Cara Penggunaan Lock (1)
1. 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.
2. Jika item belum dikunci oleh transaksi lain, lock tersebut
akan dikabulkan
3. Jika item sedang dikunci, DBMS menentukan apakah
permintaan ini compatible dengan lock saat ini. Jika
diminta shared lock pada sebuah item yang sudah
mempunyai shared lock terpasang padanya, permintaan
itu akan dikabulkan. Selain itu, transaksi harus
menunggu sampai lock yang ada terlepas.
Cara Penggunaan Lock (2)
4. Sebuah transaksi lanjut memegang lock sampai
transaksi tersebut melepasnya baik pada waktu eksekusi
ataupun pada waktu transaksi tersebut berakhir (abort
atau commit). Efek operasi tulis akan terlihat pada
transaksi lain hanya pada waktu exclusive lock telah
dilepas.
Two Phase Locking
• Two Phase Locking adalah sebuah transaksi yang
mengikuti protokol two-phase locking jika semua
operasi locking mendahului operasi unlock pertama
pada transaksi ( Connolly, 2005, p589 ).
Aturan Two Phase Locking
• 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
• Sebelum transaksi melepaskan sebuah lock, transaksi
tersebut tidak akan pernah mendapatkan lock baru
lainnya.
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.
• Cara untuk menghancurkan deadlock, yaitu abort satu
atau lebih transaksi.
• Tiga cara untuk menangani deadlock, yaitu timeout,
deadlock prevention dan deadlock detection and
recovery.
Timeout
• Pendekatan sederhana pada pencegahan deadlock
adalah berdasarkan lock timeout. Dengan pendekatan
ini, sebuah transaksi yang meminta sebuah lock akan
menunggu hanya sampai periode waktu tertentu yang
didefinisikan sistem.
Deadlock Prevention
• Untuk mencegah deadlock adalah dengan memesan
transaksi menggunakan timestamp transaksi. Dua
algoritma telah ditemukan oleh Rosenkrantz.
• Algoritma pertama, Wait-Die, mengijinkan hanya
transaksi yang lebih tua untuk menunggu yang lebih
muda, jika tidak transaksi dibatalkan (die/mati) dan
restart dengan timestamp yang sama, sehingga lama
kelamaan transaksi tersebut akan menjadi transaksi aktif
tertua dan tidak akan mati.
• Algoritma
kedua,
Wound-Wait,
menggunakan
pendekatan simetrikal. Hanya transaksi yang lebih muda
yang dapat menunggu untuk yang lebih tua. Jika
transaksi yang lebih tua meminta lock yang dipegang
oleh transaksi yang lebih muda, transaksi yang lebih
muda digagalkan.
Deadlock Detection
•

Deadlock detection biasanya ditangani oleh konstruksi wait-for
graph (WFG) yang menunjukkan ketergantungan transaksi, yaitu
transaksi Ti tergantung pada Tj jika transaksi Tj memegang lock
pada sebuah item data yang ditunggu oleh Ti.
• 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

1.Buat sebuah node untuk setiap transaksi.
2.Buat sebuah directed edge Ti → Tj , jika transaksi Ti
menunggu untuk melakukan lock sebuah item yang sedang
di-lock oleh Tj.
• Deadlock terjadi jika dan hanya jika WFG
mengandung sebuah cycle. Gambar di atas
menunjukkan WFG yang menunjukkan deadlock
antara dua transaksi.

More Related Content

Similar to KONKURENSI DATABASE

Similar to KONKURENSI DATABASE (11)

Zulyanti Megasari - Konkurensi
Zulyanti Megasari - KonkurensiZulyanti Megasari - Konkurensi
Zulyanti Megasari - Konkurensi
 
Ferli Apriadi - Konkurensi
Ferli Apriadi - KonkurensiFerli Apriadi - Konkurensi
Ferli Apriadi - Konkurensi
 
Oracle transaksi
Oracle transaksiOracle transaksi
Oracle transaksi
 
19556 lingkungan database
19556 lingkungan database19556 lingkungan database
19556 lingkungan database
 
Pertemuan 13 LINGKUNGAN DATABASES
Pertemuan 13 LINGKUNGAN DATABASESPertemuan 13 LINGKUNGAN DATABASES
Pertemuan 13 LINGKUNGAN DATABASES
 
PostgreSQL Transaksi
PostgreSQL TransaksiPostgreSQL Transaksi
PostgreSQL Transaksi
 
Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptx
 
Pertemuan 13
Pertemuan 13Pertemuan 13
Pertemuan 13
 
01 sisbasdat a 04
01 sisbasdat a 0401 sisbasdat a 04
01 sisbasdat a 04
 
Materi 11
Materi 11Materi 11
Materi 11
 
Analisis permasalahan salinan data berganda
Analisis permasalahan salinan data bergandaAnalisis permasalahan salinan data berganda
Analisis permasalahan salinan data berganda
 

KONKURENSI DATABASE

  • 1. Concurrency Endah Nursalehah Intan Permatasari Nuruly Firdausi Syifa Nurul Fauziah by : 1200212 1205415 1205900 1201734
  • 2. Concurrency Control Jika pada suatu sistem basis data terdapat sejumlah transaksi yang terjadi secara bersamaan , maka transaksi tersebut harus dapat dieksekusi dan konsistensi basis data dapat tetap terpelihara. mekanisme pengendalian konkurensi (concurency control) berlandaskan pada prinsip-prinsip serializability. yaitu transaksi dilakukan secara berurutan/serial.
  • 3. Concurrency control • Concurrency control adalah proses pengaturan operasi– operasi dalam banyak transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten ( Connolly, 2005, p577 ).
  • 4. Masalah Penting dalam Concurrency Lost-Update Lost-Update Uncommited Uncommited Dependency (dirty read) Dependency (dirty read) Inconsistent Analysis Inconsistent Analysis
  • 5. Masalah Penting dalam Concurrency Lost-Update (1) T1 Time T1 T2 balx Begin_transaction 100 T2 Begin_transaction read(balx) 100 T3 read(balx) balx = balx + 100 100 T4 balx = balx - 100 write(balx) 200 T5 write(balx) commit 90 T6 commit 90
  • 6. Masalah Penting dalam Concurrency Lost-Update (2) Penjelasan : Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T¬1 membaca nilai dari bal x sampai update T2 telah selesai.
  • 7. Masalah Penting dalam Concurrency (1) T1 Time T2 balx T1 Begin_transaction 100 T2 read(balx) 100 T3 balx = balx + 100 100 T4 Begin_transaction write(balx) 200 T5 read(balx) ... 200 T6 balx = balx - 100 rollback 100 T7 write(balx) 190
  • 8. Masalah Penting dalam Concurrency (2) Penjelasan : Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T¬1 membaca nilai dari bal x sampai update T2 telah selesai.
  • 9. Masalah Penting dalam Concurrency Inconsistent Analysis(1) Masalah inconsistent analysis muncul ketika sebuah transaksi membaca beberapa nilai dari database tapi transaksi kedua mengubah beberapa darinya ketika eksekusi transaksi yang pertama.
  • 10. Masalah Penting dalam Concurrency Inconsistent Analysis(3) T1 Time T1 T2 balx baly balz begin_tran 100 50 sum 25 T2 begin_tran sum = 0 100 50 25 0 T3 read(balx) read(balz) 100 50 25 0 T4 bal x = bal x - 10 sum = sum + balz 100 50 25 100 T5 write(balx) read(baly) 90 50 25 100 T6 read(balz) sum = sum + baly 90 50 25 150 T7 balz = balz + 10 90 50 25 150 T8 write(balz) 90 50 35 150 T9 commit read(balz) 90 50 35 150 T10 sum = sum + balz 90 50 35 185 T11 commit 90 50 35 185
  • 11. Masalah Penting dalam Concurrency Inconsistent Analysis(2) Sebuah transaksi yang meringkas data pada sebuah database (contohnya, saldo total) akan mendapat hasil yang tidak akurat jika, ketika berjalan, transaksi lain sedang mengubah database. Pada contoh tersebut, ringkasan transaksi T6 sedang berjalan secara bersamaan dengan transaksi T5. Transaksi T6 sedang menjumlahkan saldo rekening x ($100), rekening y ($50), dan rekening z($25). Namun, di tengah jalan, transaksi T5 telah mentransfer $10 dari balx ke bal¬z, sehingga T6 sekarang mempunyai hasil yang salah (lebih besar $10).
  • 12. Serializability dan Recoverability • Tujuan protokol concurrency control adalah untuk menjadwalkan transaksi sedemikian rupa sehingga dapat menghindar dari berbagai gangguan, dan juga mencegah tipe-tipe masalah yang digambarkan pada sesi sebelumnya.
  • 13. Schedule • Schedule adalah sebuah urutan dari operasi-operasi oleh satu set transaksi yang jalan bersamaan yang menjaga urutan operasi pada setiap transaksi individual ( Connolly, 2005, p580 ). • 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.
  • 14. 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 ( Connolly, 2005, p587 ). Penggunaan lock ini adalah untuk menjaga konsistensi data didalam database.
  • 15. Shared Lock • Jika sebuah transaksi mempunyai sebuah shared lock pada sebuah item data, transaksi tersebut dapat membaca item tapi tidak dapat mengubah datanya ( Connolly, 2005, p588 ).
  • 16. Exclusive Lock Jika sebuah transaksi mempunyai sebuah exclusive lock pada sebuah item data, transaksi tersebut dapat membaca dan mengubah item data ( Connolly, 2005, p588 ).
  • 17. Cara Penggunaan Lock (1) 1. 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. 2. Jika item belum dikunci oleh transaksi lain, lock tersebut akan dikabulkan 3. Jika item sedang dikunci, DBMS menentukan apakah permintaan ini compatible dengan lock saat ini. Jika diminta shared lock pada sebuah item yang sudah mempunyai shared lock terpasang padanya, permintaan itu akan dikabulkan. Selain itu, transaksi harus menunggu sampai lock yang ada terlepas.
  • 18. Cara Penggunaan Lock (2) 4. Sebuah transaksi lanjut memegang lock sampai transaksi tersebut melepasnya baik pada waktu eksekusi ataupun pada waktu transaksi tersebut berakhir (abort atau commit). Efek operasi tulis akan terlihat pada transaksi lain hanya pada waktu exclusive lock telah dilepas.
  • 19. Two Phase Locking • Two Phase Locking adalah sebuah transaksi yang mengikuti protokol two-phase locking jika semua operasi locking mendahului operasi unlock pertama pada transaksi ( Connolly, 2005, p589 ).
  • 20. Aturan Two Phase Locking • 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 • Sebelum transaksi melepaskan sebuah lock, transaksi tersebut tidak akan pernah mendapatkan lock baru lainnya.
  • 21. 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. • Cara untuk menghancurkan deadlock, yaitu abort satu atau lebih transaksi. • Tiga cara untuk menangani deadlock, yaitu timeout, deadlock prevention dan deadlock detection and recovery.
  • 22. Timeout • Pendekatan sederhana pada pencegahan deadlock adalah berdasarkan lock timeout. Dengan pendekatan ini, sebuah transaksi yang meminta sebuah lock akan menunggu hanya sampai periode waktu tertentu yang didefinisikan sistem.
  • 23. Deadlock Prevention • Untuk mencegah deadlock adalah dengan memesan transaksi menggunakan timestamp transaksi. Dua algoritma telah ditemukan oleh Rosenkrantz. • Algoritma pertama, Wait-Die, mengijinkan hanya transaksi yang lebih tua untuk menunggu yang lebih muda, jika tidak transaksi dibatalkan (die/mati) dan restart dengan timestamp yang sama, sehingga lama kelamaan transaksi tersebut akan menjadi transaksi aktif tertua dan tidak akan mati. • Algoritma kedua, Wound-Wait, menggunakan pendekatan simetrikal. Hanya transaksi yang lebih muda yang dapat menunggu untuk yang lebih tua. Jika transaksi yang lebih tua meminta lock yang dipegang oleh transaksi yang lebih muda, transaksi yang lebih muda digagalkan.
  • 24. Deadlock Detection • Deadlock detection biasanya ditangani oleh konstruksi wait-for graph (WFG) yang menunjukkan ketergantungan transaksi, yaitu transaksi Ti tergantung pada Tj jika transaksi Tj memegang lock pada sebuah item data yang ditunggu oleh Ti. • 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 1.Buat sebuah node untuk setiap transaksi. 2.Buat sebuah directed edge Ti → Tj , jika transaksi Ti menunggu untuk melakukan lock sebuah item yang sedang di-lock oleh Tj.
  • 25. • Deadlock terjadi jika dan hanya jika WFG mengandung sebuah cycle. Gambar di atas menunjukkan WFG yang menunjukkan deadlock antara dua transaksi.