elasticsearch / / 2022. 12. 22. 20:37

elasticsearch 테스트케이스에 따른 시간 측정

ElasticsearchRepository를 사용하여 elasticsearch에 문서를 저장하는 속도를 측정해보았다.

테스트 케이스

1. save와 saveAll의 저장 속도 비교

  • save로 저장하는 경우 단건을 하나씩 저장
  • saveAll로 저장하는 경우 여러건을 bulk로 저장

2. 필드 유형 지정하지 않는 경우 저장 속도/크기 비교

  • keyword, text, long 등 @Field를 지정하는 경우
  • 필드유형을 지정하지 않는 경우 (text, keyword 둘다 생성)

3. nested 타입을 object 타입으로 변경

  • nested 타입으로 저장되면 내부적으로 doc문서가 더 생긴다. (nested의 건수별로)

4. shard 개수에 따른 속도 비교 (shard=10)

  • shard개수를 1개로 지정하는 경우와 10개로 지정하는 경우

5. 기존 문서를 수정하는 경우 (nested 사용)

  • 문서를 생성한 다음 그 문서를 수정하는 경우 걸리는 시간 및 크기

6. 기존 문서를 수정하는 경우 (nested->object로 변경)

  • 문서를 생성한 다음 그 문서를 수정하는 경우 걸리는 시간 및 크기

Document 정의

테스트를 위해 기본적인 elastic document를 아래와 같이 생성한다.

[userDoc]

  • id (keyword, size=36)
  • userId (keyword, size=10)
  • name (keyword, size=10)
  • age (long, size=2)
  • address (text, size=30)
  • devices (nested, count=3)
  • userRole (nested, count=1)
  • createdAt (long, size=14)
  • description (text, size=60)

테스트 방법

  • userDoc에 1000건을 동시에 입력하여 걸리는 시간을 측정한다.
  • 사용된 API는 ElasticsearchRepository의 save와 saveAll 메소드를 이용하였다.
  • shard 개수는 1개이다.
  • elasticsearch 서버는 로컬에서 실행

테스트 진행

1. save와 saveAll의 저장 속도 비교

save를 사용

실행시간: 95초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 512k

saveAll을 사용

실행시간: 0.5초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 495k

2. 필드 유형 지정하지 않는 경우 저장 속도/크기 비교

save를 사용

실행시간: 90초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 817k

saveAll을 사용

실행시간: 0.5초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 741k

3. nested 타입을 object 타입으로 변경

save를 사용

실행시간: 89초
docs 개수: 1000개 (userDoc 문서)
파일 크기: 507k

saveAll을 사용

실행시간: 0.4초
docs 개수: 1000개 (userDoc 문서)
파일 크기: 428k

4. shard 개수에 따른 속도 비교 (shard=10)

save를 사용

실행시간: 93초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 984k

saveAll을 사용

실행시간: 0.6초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 588k

5. 문서를 수정하는 경우 (nested)

save를 사용

실행시간: 93초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 972k

saveAll을 사용

실행시간: 0.6초
docs 개수: 5000개 (userDoc + nested 문서 포함)
파일 크기: 494k

6. 문서를 수정하는 경우 (object)

save를 사용

실행시간: 112초 (수정시간만)
docs 개수: 1000개 (삭제 개수: 1000건)
파일 크기: 989k

saveAll을 사용

실행시간: 0.5초 (수정시간만)
docs 개수: 1000개 (삭제 개수: 1000건)
파일 크기: 858k

정리

테스트 케이스 저장방법 실행시간 docs 개수/deleted 개수 파일크기 refresh 수 segment 수
1. 기본 저장속도 save
savelAll
95s
0.5s
5000/0
5000/0
512k
495k
1046(45s)
4(0.03s)
10
1
2. 필드 유형 지정안함 save
savelAll
90s
0.5s
5000/0
5000/0
817k
741k
1041(46s)
4(0.06s)
10
1
3. object로 변경 save
savelAll
89s
0.4s
1000/0
1000/0
507k
428k
1039(42s)
4(0.03s)
10
1
4. shard 개수를 10으로 save
savelAll
93s
0.6s
5000/0
5000/0
1.03M
588k
10074(43s)
40(0.7s)
64
10
5. 문서 수정(nested) save
savelAll
93s
0.5s
5000/5000
5000/5000
1.5M->972k
494k
2084(94s)
5(0.08s)
11->2
2
6. 문서 수정(object) save
savelAll
112s
0.5s
1000/1000
1000/1000
1.12M->789k
858k
2009(101s)
5(0.08s)
11->2
2
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유