사바라다
401
2021-08-16 22:53:37
3
705

낙관적락과 비관적락에 대해서 - 이론과 JPA 실습


안녕하세요


이번에 포스팅으로 낙관적락과 비관적락에 대해서 이론적인 정리 및 JPA를 통해 실습하는 포스팅을 게재했습니다.


관심있으셨던 분들에게 도움이 될 것 같아 이렇게 올려봅니다.


낙관적락과 비관적락의 이론

https://sabarada.tistory.com/175


JPA를 이용하여 낙관적락 구현하기 및 쿼리 확인

https://sabarada.tistory.com/185


JPA를 이용하여 비관적락 구현하기 및 쿼리 확인

https://sabarada.tistory.com/187


감사합니다.

1
  • 댓글 3

  • 지붕뚫고높이차
    1k
    2021-08-17 10:12:18
    글 잘 읽었습니다.

    글 내용중
    낙관적 락은 어플리케이션 영역에서
    처리해야 한다 했는데

    DBMS 의 MVCC 기술을 사용하면
    되지 않을까 생각합니다.

    또한 JPA 같은 어플리케이션 영역에서
    낙관적 락을 처리한다고 할때
    단일 프로세스는 (JPA 가 하나만 구동)
    JAVA 의 모니터를 통해 잘 구현 되겠지만

    클러스터 환경에선
    중계 역할을 하는 프로세스가 필요하거나
    동기화 비용이 추가적으로 들어가는 문제가 있어

    어플리케이션 영역보단
    DBMS 영역에서 낙관적 락을 사용하는게
    더 효과적일 것 같습니다.
  • 사바라다
    401
    2021-08-17 22:48:18 작성 2021-08-17 22:53:20 수정됨

    안녕하세요 !

    덧글 감사드립니다.

    말씀하신 MVCC는 트랜잭션에 의해서 비관적락 또는 격리성이 일정 이상일때 undo log에서 데이터를 읽어내어 lock이 걸리더라도 READ에 대해서  동시성에 이슈가 없더록 하는 기술로 저는 이해하고 있습니다.

    낙관적락은 동시에 하나의 row에 업데이트를 발생시키는 등의 race condition이 생길 때 version을 비교하여 근소한 차이에 들어온 뒤의 update에 대해서 실패시키는 메커니즘이구요.

    둘은 쓰임새가 다르게 느껴지는데 어떠실까요 ?

    혹시 제가 잘못 이해하고 있는 부분이 있다면 정정 부탁드리겠습니다. :)

  • 지붕뚫고높이차
    1k
    2021-09-06 22:55:46 작성 2021-09-06 22:58:53 수정됨

    안녕하세요.

    제가 댓글을 늦게 봤네요. (오키 알람이 친절하지 않습니다.)

    말씀하신 MVCC 와 낙관적 락에 대한 개념은 맞습니다.


    JPA 을 사용해 낙관적 락을 사용하는 것보다


    DBMS 에 이미 구현되어 있는 MVCC 나 낙관적제어(낙관적락)를 

    직접 사용하는게 효과적일 것 같아 적어 봤습니다.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.