Deadlock 해결방안
2021. 7. 20. 10:20ㆍDB/기타
발생 현황(3건)
- 6/3 오후 19시 1건 발생(2021-06-03 19:33:55.803)
- 6/4 오후 20시 1건 발생(2021-06-04 20:26:22.500)
- 7/5 오후 21시 1건 발생(2021-07-05 21:28:23.273)
발생 상황
- 글 상세 조회시 조회수 업데이트 관련 테이블에 조회수 update시 pagelock 발생
발생 원인
- 현재 하나의 Transaction에 대량의 데이터를 처리하고있음.
-
UPDATE CNT_TABLE SET CNT = CNT+1 WHERE NO=NO ------------------------ ----대량 데이터 처리---- ------------------------
-
- Update 후 이어지는 데이터처리량이 많고 그로인한 처리시간 지연 -> lock 시간이 길어짐.
해결방안
- Transaction을 세부적으로 분기
- 가장 효율적이라고 생각
- SP 특성상 해당 SP를 사용하는곳이 많이 존재하면 분기가 어려움.
-
----tracnsactnion 1 ----- UPDATE CNT_TABLE SET CNT = CNT+1 WHERE NO=NO -----tracnsactnion 2-------- -대량 데이터 처리 분기 1---- --------------------------- -----tracnsactnion 3------- -대량 데이터 처리 분기 2---- --------------------------- -----tracnsactnion 4------- -대량 데이터 처리 분기 3---- ---------------------------
- Transaction 내부의 UPDATE 발생 순서 변경
- Transaction의 마지막에 UPDATE를 발생시키면 UPDATE로 인한 LOCK이 잠기는 시간이 감소 할 것이라고 생각.
- 지식이 부족해 테스트 진행 중...
-
-------------------- -대량 데이터 처리---- ---------------------- UPDATE CNT_TABLE SET CNT = CNT+1 WHERE NO=NO
-