인프런 커뮤니티 질문&답변
AUTO INC Lock 하고 뮤택스 락 차이 관련해서 질문 드립니다.
작성
·
249
·
수정됨
0
제가 알기로는 뮤택스나 Auto inc Lock 둘다 Lock 기법을 이용해서 사용하는 것으로 알고 있습니다.
그런데 Auto Inc Lock 경우 뮤택스 락과 어떤 것이 차이가 있어서
뮤택스가 더 가볍다는 건가요?
제가 알기로는 Lock 기법이
- 뮤택스 
- 세마포어 
- 모니터 
이렇게 3가지가 있다고 알고 있습니다.
(간단히 설명하자면....) 일반적으로 뮤택스 경우 Lock 기법을 이용해
특정 임계영역을 하나의 스레드로 작동해서 동시성 문제를 해결하고자 하는것인데
그외 세마포어, 모니터 경우 부가 기능
세마포어: 특정 임계영역에 몇개의 스레드를 허용 할것인지
그리고 뮤택스 경우 해당 스레드가 Lock을 얻었으면 직접 Lock 을 해지해야 되는 반면 세모포어는 다른 스레드가 직접 다른 스레드 Lock을 해지 가능
모니터: 특정 스레드가 Lock을 획득하고 임계영역에 들어왔을때 어떠한 조건으로 인해 wating 상태로 변환되고 그 다음 스레드가 Lock 획득 후 임계영역으로 들어온다.
이렇게 알고 있습니다.
그럼 여기서 Auto Inc Lock 경우 어떤 Lock 기법을 이용하길래 뮤택스보다 느리다는 건가요?
답변 1
1
안녕하세요~ 질문 남겨주셔서 감사합니다.
Auto Increment Lock 은 innodb_autoinc_lock_mode 값과, INSERT 문의 종류에 따라서 사용하는 Lock 이 다른데요. innodb_autoinc_lock_mode=1 이고, Simple Insert 종류 (= 미리 넣을 행의 수를 알고 있는 경우) 에는 Mutex 를 이용합니다. 그러나 Insert 의 종류가 Simple Insert 가 아니라 Bulk Insert 인 경우라면 Mutex 가 아니라 Table-level 의 Lock 을 이용하는데요. 이 경우에는 동시성 수준이 엄청 떨어지는 것이겠죠.
질문 하신 내용이 이게 맞을까요? 제가 해석한 바는 이것인 거 같습니다.
그리고 더 자세하게 알고 싶으시면 아래 링크를 참고해보셔도 좋을 것 같아요~
https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html






