작성
·
488
답변 1
1
timestamp를 이용한 deadlock 예방기법은 사실 면접에서 물어보질 않아서 깊게 설명을 드리진 않았습니다. 또한 전공과목을 배울 때도 엄청 자세히 중요하게 살펴보는 내용은 아니라서, 공부했을 당시에는 깊게 공부했더라도 현재는 저 또한 timestamp를 이용해서 예방하는 구나 정도만 인지하고 있습니다. 하지만 한번 깊은 이해를 해두면 좋을 수 있으니 적당한 깊이로 추가 설명드리겠습니다 ㅎㅎ
deadlock을 예방하기 위해 트랜잭션이 시작된 시간을 timestamp로 삼고, 이를 기준으로 크게 두 방식으로 처리합니다.
1. Wait-die
T1, T2 두 개의 transaction이 있다고 해볼게요. T2가 선점하고 있는 data에 T1이 접근을 요청합니다. T1의 timestamp가 T2의 timestamp보다 더 older일 경우에는 wait 할 수 있습니다. 그렇지 않은 경우에 T1은 그냥 die 합니다. (roll back)
2. Wound-wait
T1, T2 두 개의 transaction이 있다고 해볼게요. T2가 선점하고 있는 data에 T1이 접근을 요청합니다. T1의 timestamp가 T2의 timestamp보다 더 younger일 경우에는 wait 할 수 있습니다. 그렇지 않은 경우 에 T2는 그냥 die 합니다(roll back)
답변 감사합니다.
단순히 생각하기에 wound-wait가 wait-die에 비해 roll back이 덜 일어날 것 같은데 그러면 실제로는 wound-wait 방식의 구현이 대부분인가요?