'DeadLock'에 해당되는 글 1건

mssql deadlock

카테고리 없음 2016. 8. 11. 17:30

Stored procedure 에서 transaction을 걸때 isolation level을 잘못 쓰면 select 할때도 락을걸어 다른 프로시져에서 기다리게 만든다.

Isolation level:
https://support.microsoft.com/ko-kr/kb/601430

위 상황이 확률이 높고.. 여러개의 procedure들간 테이블 업데이트 순서가 달라도 발생가능성이 있다고 한다.

데드락인 상황을 그려보면,

SP1
Begin tran
Update A
Update B

SP2
Begin tran
Update B
Update A

이 두 프로시져가 다수 호출되는 서비스라면 서로 우연찮게 같은 row를 고치려고 할때 각각의 프로시져가 커밋될때까지 기다리는 데드락 상황이 올수있다.
이와같은 업데이트가 아니더라도 isolation level을 잘못 셋팅하면 셀렉트도 발생시키는 원인이 될수 있다.





블로그 이미지

시간을 거스르는자

,