Deadlock Handling

Deadlock คือการที่ Transaction A wait for resource that transaction B obsess and transaction B waits for resource that transaction A obess

Deadlock detection คือการเช็คว่าจะมีลักษณะของการเกิด deadlock ในขณะนั้น หรือไม่ ซึ่งโดยปกติจะเป็นคำสั่งที่ DBA จะสั่งเพื่อดู deadlock process ในขณะนั้น เมื่อทราบว่า มี transaction ไหนที่ deadlock ก็สามารถ kill process ไปได้ หรืออีกวิธีหนึ่งก็คือปล่อยไปเรื่อยๆ จนกว่า transaction ใด transaction หนึ่งจะ timeout

วิธีที่จะป้องไม่ให้เกิด deadlock มี 2 วิธีคือ
1. wait-die scheme คือ ให้ transaction ที่มาก่อนรอ และ transaction ที่มาหลังให้ die คือหยุด process ไปเลย
2. wound-wait scheme คือให้ transaction ที่มาก่อน wound transaction ที่ถือครอง resource แต่ว่ามาทีหลัง (เหมือนกับ kill transaction ที่ถือครอง resource อยู่) ถ้า transaction ที่มาหลังมาขอ resource จะให้ wait ไปก่อน

No comments:

Post a Comment