redis lock과 mysql lock 성능 질문입니다.
1050
작성한 질문수 1
강의를 보면 redis의 redisson과 mysql db lock 중 redisson을 이용한 방식이 더 성능이 좋다고 설명 해주셨는데요.
강의의 테스트 코드 수행시간을 보면 mysql의 비관락이 약 2초, redisson을 이용한 방식이 약 5초 정도 걸리는 것을 보아 비관락의 성능이 더 빠른 것처럼 보이는데..
이럼에도 불구하고 redisson의 성능이 더 좋다고 하시는 이유가 궁금합니다.
답변 1
0
mirr 님 안녕하세요.
우선 intellij 를 통한 테스트코드의 수행시간은 컴퓨터환경같이 외부환경에 따라 달라질 수 있기때문에 테스트코드의 수행시간으로 비교하면 안될것 같습니다.
redisson 과 mysql 의 db lock 을 비교하기보다는 redis 와 mysql 을 비교하는 것이 조금 더 나을 것 같습니다.
redis 의 경우 inmemory database 이기때문에 굉장히 빠르게 동작하기때문에 mysql 보다 성능이 좋다고 말씀을 드렸습니다.
또한 mysql 의 비관적락을 사용하게 된다면 독점 사용을 위해 레코드에 lock 을 걸게되고 이는 비용이 비싼 작업입니다.
예제와 같이 로직이 간단할 때는 괜찮을 수 있겠으나, 여러 테이블의 데이터를 접근할 때 데드락이 발생할 수 있는 위험도 가지게 됩니다.
하지만, 모든 상황에서 redis 가 성능이 좋을수는 없습니다.
예를들어 충돌이 빈번하지 않은 (예를들어 1년에 1번) 경우에는 lock 을 사용하는것이 낭비일 수 있습니다.
이런 경우에는 낙관적락을 사용하는것이 조금 더 성능이 좋을 수 있습니다.
감사합니다.
0
답변 감사합니다.
컴퓨터환경에 따라 수행시간이 변동될 수 있으나, 같은 컴퓨터 환경에서 테스트 코드를 수행했기때문에 테스트 코드의 속도가 성능의 지표가 될 수 있을 거라고 생각하였습니다. 혹시 이 생각이 틀린 걸까요?
0
개인적인 의견으로는 강의에서 만든 테스트코드의 속도가 성능의 지표가 될수는 없을 것 같습니다.
테스트데이터가 적기때문에 제대로 된 테스트라고 할 수 없기때문입니다.
정확한 테스트는 데이터를 적재한 후 성능테스트를 수행하는것이 좋아보입니다.
감사합니다 :)
레디선 테스트코드에서 채널이름은 없어도 되는건가요?
0
45
2
낙관적 락을 사용할 떄 차이점
0
125
2
동시성 검증 코드에 관한 문의
0
96
2
단일연산
0
70
2
낙관적락vs. 레디스락
0
108
2
안녕하세요. 레디슨 질문있습니다..!!
0
67
2
@Lock(OPTIMISTIC)이 필요한 이유
0
90
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
132
2
DataSource Hikari 사용 이유
0
148
2
saveAndFlush 사용 이유 문의
0
113
3
비관적 락 VS 네임드 락
0
161
3
application.yaml 에 redis 정보
0
101
2
왜 클래스 이름에 Facade 가 붙나요?
0
185
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
220
2
@modifying 이용한 동시성 제어
0
168
2
DB락과 분산락
0
262
2
NamedLock 테스트 실패
0
186
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
174
2
optimistic Lock 재시도 질문입니다.
0
233
2
낙관적 락 테스트 실패
0
242
2
오류?
0
1630
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
268
2
Pessimistic Lock 전체 테스트 오류 문의
0
362
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
462
2





