인프런 커뮤니티 질문&답변

리나님의 프로필 이미지
리나

작성한 질문수

MySQL 성능 최적화

Theory

AUTO INC Lock 하고 뮤택스 락 차이 관련해서 질문 드립니다.

작성

·

176

·

수정됨

0

제가 알기로는 뮤택스나 Auto inc Lock 둘다 Lock 기법을 이용해서 사용하는 것으로 알고 있습니다.

 

그런데 Auto Inc Lock 경우 뮤택스 락과 어떤 것이 차이가 있어서

 

뮤택스가 더 가볍다는 건가요?

 

제가 알기로는 Lock 기법이

  1. 뮤택스

  2. 세마포어

  3. 모니터

이렇게 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

리나님의 프로필 이미지
리나

작성한 질문수

질문하기