Elasticsearch의 저장속도 및 조회속도가 거의 실시간으로 빠르다고 하기에 RDBMS에 비하면 얼마나 빠를까 궁금해서 데이터 만개를 생성해서 저장하고 조회해보겠습니다.
데이터 저장 테스트
데이터 저장을 위한 2개의 컨트롤러를 생성했습니다./api/register1
은 elasticsearch에 저장하는 api, api/register2
는 MySQL에 저장하는 api입니다.
@PostMapping("/api/register1")
public String register1(){
List<User> list = new ArrayList<>();
for(int i =1; i <= 10000; i++){
list.add(new User(i+"", "연준"+i,i));
}
userRepository.saveAll(list);
return "성공";
}
@PostMapping("/api/register2")
public String register2(){
List<Member> list = new ArrayList<>();
for(int i =1; i <= 10000; i++){
list.add(new Member((long) i, "연준"+i,i));
}
memberRepository.saveAll(list);
return "성공";
}
데이터 저장 테스트 결과
데이터 저장 성능에 굉장한 차이를 보였습니다. Elasticsearch는 3.3 s, MySQL은 2 m 30.90 s 의 결과를 보여주었고 굉장한 차이를 보여주었습니다.
데이터 조회 테스트1
먼저 MySQL의 index를 이용한 조회와 Elasticsearch의 조회 속도를 비교해보겠습니다.
// Elasticsearch
@GetMapping("/api/search1/{id}")
public User get1(
@PathVariable String id
){
return userRepository.findById(id).get();
}
// MySQL
@GetMapping("/api/search2/{id}")
public Member get2(
@PathVariable String id
){
return memberRepository.findById(Long.valueOf(id)).get();
}
데이터 조회 데트스 결과1
- Elasticsearch : 최소값 10 ms, 평균 72 ms
- MySQL : 최소값 40 ms, 평균 112.5 ms
MySQL 인덱스를 이용한 조회를 했는데도 최소값과 평균값의 큰 차이를 보여주었습니다.
이 테스트의 결과를 통해 Elasticsearch의 조회속도가 MySQL에 비해 굉장히 빠르다는 것을 보여주었습니다.
데이터 조회 테스트2
이번에는 Elasticsearch와 MySQL full scan의 조회 속도를 비교해보겠습니다.
// Elasticsearch
@GetMapping("/api/search3/{name}")
public User get3(
@PathVariable String name
){
return userRepository.findFirstByName(name).get();
}
// MySQL
@GetMapping("/api/search4/{name}")
public Member get4(
@PathVariable String name
){
return memberRepository.findFirstByName(name).get();
}
데이터 조회 테스트 결과2
- Elasticsearch : 최소값 19 ms, 평균값 70 ms
- MySQL : 최소값 24 ms, 평균값 91 ms
'DB' 카테고리의 다른 글
정규화 (0) | 2024.01.23 |
---|---|
Elasticsearch Spring Boot에 적용해보기 (1) | 2024.01.10 |
Elasticsearch 란? (1) | 2024.01.10 |
[MySQL] SELECT 문 (0) | 2024.01.05 |
[MySQL] 계정 생성 및 권한 부여 (0) | 2024.01.05 |