db

    데드락 이슈(외래키 s-lock)

    hyper-link(통합플랫폼)의 테이블 구조는 member와 content의 다대다 관계를 막고자 중간에 member_content테이블을 두었다. 그래서 좋아요 클릭시 member_content의 컬럼이 insert되고, content테이블의 like_count컬럼 값이 증가한다. 이를 바탕으로 좋아요 API는 memberContent 저장 후, content테이블의 like_count를 증가하는 로직으로 구현하였다. 구현 후에, 동시성 테스트를 진행하는데, 데드락이 발생했다. 찾아보니 외래키가 존재하는 자식 테이블의 insert, update, delete시 부모테이블의 존재를 확인하기 위해 해당 컬럼에 s-lock을 건다고 한다. 따라서 아래와 같은 상황이 발생한 것으로 예상된다. 각 스레드가 서..