Name Lock (네임 락)

Han Gyul Kang·2022년 10월 16일

동시성 문제

목록 보기
4/7

상위글 : 동시성 이슈 해결 고민

이름을 가진 메타데이터 락

이름을 가진 락을 획득한 후 해제될 때까지 다른 세션은 이 락을 획득할 수 없다.

// 락 획득
select get_lock(:key, 1000)

// 락 해제
select release_lock(:key)

주의할 점

  1. 트랜잭션이 종료될 때 락이 자동해제 되지 않기 때문에 별도로 락을 해제__해주거나 선점 시간이 끝나야 해제 됨

  2. 실제 사용 시 다른 데이터소스를 분리하여 사용해야 함
    Connection Pool이 부족해져 다른 서비스에 영향을 끼칠 수 있음

  3. 주로 분산락을 구현할 때 사용 함
    데이터 삽입 시 정합성을 맞춰야할 때 사용 함
    다만 실제 구현 방식이 매우 복잡할 수 있음

  4. 트랜잭션 종료 시 락 해제와 세션 관리를 잘 해줘야함

profile
피아노 치는 개발자

0개의 댓글