| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Git
- 인터페이스
- Spring
- 자바
- 자바스크립트
- 리뷰
- 엘라스틱서치
- Spring Boot
- javascript
- 이펙티브
- 독후감
- jface
- error
- Web
- RCP
- 백준
- 후기
- boot
- java8
- node
- java
- effective
- 스프링
- kibana
- elasticsearch
- 맛집
- 알고리즘
- nodejs
- MySQL
- JPA
Archives
- Today
- Total
wedul
Lucene의 commit과 flush의 차이 본문
반응형
Lucene에서 데이터 색인을 위해서 사용하는 IndexWriter의 flush와 commit 두 가지 command의 차이를 정리해보자.
두 개의 operation 이름만 보게되면 동일한 동작을 수행할 것 같지만 실질적으로 다른 동작을 수행한다.
우선 공통적으로 commit과 flush는 둘 다 메모리에 있는 데이터를 디스크에 쓰는 작업을 한다. 하지만 이 부분에 차이점이 있는데 commit은 인덱스를 업데이트하여 디스크에 데이터를 바로 찾을 수 있도록 하는 추가작업을 수행한다.
그래서 만약 lucene IndexWriter에서 flush만 수행하고 commit을 하지 않았다면 해당 인덱스에 대한 변경사항은 검색할 수 없다.
그렇다면 commit을 수행하고 flush를 하지 않는다면 어떻게 될까? 이 경우에는 문제가 없다. 왜냐하면 commit은 해당 동작 수행 즉시 바로 flush를 수행하기 때문이다.
flushing은 일반적으로 인덱스 메모리에서 거대한 데이터를 가지기 어려울 때 주기적으로 발생되는 명령어이기도 하다.
하지만 commit은 실제로 인덱스가 읽기 가능한 상태로 만들기 위해서 추가적으로 발생되는 비용이 있기 때문에 실제로 작업이 완료되어 검색이 가능한 상태가 되길 원할 때만 수행해야한다.
반응형
'데이터베이스 > Lucene' 카테고리의 다른 글
| Lucene의 segment가 immutable한 이유 (0) | 2021.02.03 |
|---|---|
| Lucene 기본, 색인, 성능 최적화 정리 (0) | 2021.01.16 |
