- 데이터베이스에서도 데드락이 걸릴 수 있다.
교착 상태 감지
교착상태 감지 밑 time out 방법.. 일정 시간이후 트랜잭션이 실행되지 않을 경우 rollback을 시킨다.!
그래프기반으로 사이클 탐색해서, 그래프 내의 사이클이 형성되었다라는 것을 기반으로 교착상태를 감지한다. 이것은 데드락 프로파일러라고도 하는데.. 게임버서에서도 구현해놓는 경우가 종종있다..
교착 상태가 일어나지 않도록 방지하는 방법.!
- 교착 상태를 방지하기 위해서. 격리 수준을 행수준 잠금 또는 격리수준을 조정할 수 있다 그렇지만 격리수준이 가장 높은 serializable이 아닌 이상 모든 교착상태를 방지하는 것은 어렵다.. 또한 직렬화는 성능이 떨어져서 실무에서 별로 사용하지 않는다..
wait - die 방법
트랜잭션 방지하기 위한 비선점 방식
트랜잭션 Ti가 Tj에 의해 locking된 데이터를 요청할 때 Ti가 먼저 들어온 트랜잭션이라면 기다리는데 그렇지 않으면 die한다.
다른 트랜잭션이 데이터를 점유하고 있을 때 기다리거나, 죽는 것이다.
wound - wait 방법
트랜잭션 Ti가 Tj에 의해 locking된 데이터를 요청할 때 Ti가 먼저 들어온 트랜잭션이라면 데이터를 선점해서 빼았는데 그렇지 않으면 wait 기다린다.
다른 트랜잭션이 데이터를 점유하고 있을 때 빼앗거나 기다리는 것.
'데이터베이스' 카테고리의 다른 글
게임데이터 정보를 db에 저장하기 (0) | 2022.07.09 |
---|---|
데이터베이스 격리수준 (0) | 2022.06.22 |
집계 함수(SUM, MAX, MIN, AVG, group by, having) (0) | 2021.12.30 |
옵티마이저와 실행계획 (0) | 2021.12.30 |
join (0) | 2021.12.29 |