본문 바로가기
데이터베이스

데이터베이스의 deadlock.. 데드락.

by kcj3054 2022. 6. 22.
  • 데이터베이스에서도 데드락이 걸릴 수 있다.

교착 상태 감지

  • 교착상태 감지 밑 time out 방법.. 일정 시간이후 트랜잭션이 실행되지 않을 경우 rollback을 시킨다.!

  • 그래프기반으로 사이클 탐색해서, 그래프 내의 사이클이 형성되었다라는 것을 기반으로 교착상태를 감지한다. 이것은 데드락 프로파일러라고도 하는데.. 게임버서에서도 구현해놓는 경우가 종종있다..

교착 상태가 일어나지 않도록 방지하는 방법.!

  • 교착 상태를 방지하기 위해서. 격리 수준을 행수준 잠금 또는 격리수준을 조정할 수 있다 그렇지만 격리수준이 가장 높은 serializable이 아닌 이상 모든 교착상태를 방지하는 것은 어렵다.. 또한 직렬화는 성능이 떨어져서 실무에서 별로 사용하지 않는다..

wait - die 방법

  • 트랜잭션 방지하기 위한 비선점 방식

  • 트랜잭션 Ti가 Tj에 의해 locking된 데이터를 요청할 때 Ti가 먼저 들어온 트랜잭션이라면 기다리는데 그렇지 않으면 die한다.

  • 다른 트랜잭션이 데이터를 점유하고 있을 때 기다리거나, 죽는 것이다.

wound - wait 방법

  • 트랜잭션 Ti가 Tj에 의해 locking된 데이터를 요청할 때 Ti가 먼저 들어온 트랜잭션이라면 데이터를 선점해서 빼았는데 그렇지 않으면 wait 기다린다.

  • 다른 트랜잭션이 데이터를 점유하고 있을 때 빼앗거나 기다리는 것.

출처 : https://blog.naver.com/PostView.nhn?blogId=ndb796&logNo=221243161017&parentCategoryNo=&categoryNo=1&viewDate=&isShowPopularPosts=false&from=postView

'데이터베이스' 카테고리의 다른 글

게임데이터 정보를 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