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

jahni님의 프로필 이미지

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

수행 시간 비교 관련 질문

작성

·

249

0

안녕하세요 좋은 강의 해주셔서 감사합니다.

강의를 전부 듣고 각 방식의 성능이 궁금하여 이를 찍어보았는데 조금 의아한 결과가 나와서 질문 드립니다.

  1. 동시성 처리 안한 버전 256 ms

  2. synchronized 버전 962 ms

  3. 비관적락 468 ms

  4. 낙관적락 1441 ms

  5. NamedLock 807 ms

  6. LettuceLock 4184 ms

  7. RedissonLock 1137 ms

몇번씩 테스트해본 결과 대략 위와 같은 정도의 성능이 나옵니다.

 

처음 생각하기로는 Redis 사용 방식이 비교적 빠를것이고, DB에 락을 거는 방식이 Redis에 비해 느리지 않을까 했는데 오히려 반대로 DB에 락을 거는게 빠르고 Redis를 사용하는 방식이 느린것을 확인할 수 있었습니다.

 

혹시 이러한 결과가 나오게 된 이유를 여쭤볼 수 있을까요? 감사합니다.

 

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

jahni 님 안녕하세요.
성능은 현재 있는 데이터와 처리량에 따라서 다를 수 있습니다.
테스트시에 매우 적은 데이터와 적은 처리량으로 테스트를 하셨을거라고 생각합니다.
그럴경우에는 mysql 의 성능이 조금 더 좋게 나올 수 있습니다.
감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요. 질문에 대한 답변드리겠습니다.

결과를 보면, RedissonLock 방식이 가장 느린 것으로 나와서 이와 관련하여 질문하신 것으로 추정됩니다.

Redis는 In-memory 데이터 구조를 기반으로 하기 때문에 데이터 조회 속도와 락 처리 속도가 빠릅니다. 반면, RedissonLock 방식은 Redis를 이용하여 락을 걸기 때문에 Redis의 락 처리 속도와 Redis와의 데이터 전송 속도 등 여러 요인에 따라 처리 속도가 떨어질 수 있습니다.

그리고 실제 사용하기에는 LettuceLock 방식이 가장 효율적인 경우가 많기 때문에 LettuceLock을 사용하는 것을 추천합니다.

제가 답변해드릴 수 있는 내용은 이정도이며, 추가적인 도움이 필요하시면 언제든지 문의해주세요. 감사합니다.

jahni님의 프로필 이미지

작성한 질문수

질문하기