In 파트 I 또는 시리즈에서 글로벌 인덱스와 로컬 인덱스의 아키텍처와 Couchbase Server에서 글로벌(GSI) 인덱스와 로컬 인덱스(MapReduce View)를 언제 사용해야 하는지에 대해 핵심적으로 다뤘습니다. In 파트 II 시리즈에서는 메모리에 최적화된 새로운 글로벌 보조 인덱스와 높은 변이율과 빠른 스캔 속도만을 위해 설계된 인메모리 구조로 인덱스 유지 관리 성능을 향상시키는 MOI에 대해 이야기했습니다. 이번 3부에서는 4.5에서 표준 글로벌 보조 인덱스가 어떻게 개선되었는지에 대해 말씀드리고자 합니다. 이 영역에는 여러 가지 개선 사항이 있지만 가장 중요한 발전은 "순환 쓰기"라는 새로운 쓰기 모드라고 할 수 있습니다.
메모리 최적화 대 표준 글로벌 보조 인덱스 비교
메모리 최적화 인덱스는 4.5 버전에서 GSI를 위한 추가 저장소 옵션으로 추가되었습니다. 표준 글로벌 보조 인덱스는 버전 4.0부터 존재해 왔습니다. 관리자는 메모리에 맞지 않는 인덱스에 대해 아래에 ForestDB를 사용하는 표준 GSI 스토리지로 GSI를 구성하거나 더 빠른 인메모리 인덱싱 및 쿼리를 위해 메모리 최적화 GSI를 선택할 수 있습니다. 인메모리 인덱스 관리를 통해 메모리에 최적화된 인덱스가 최상의 인덱스 유지 관리 및 스캔 성능을 제공할 수 있지만, 모든 인덱스를 메모리에 저장할 수 있는 여유가 있는 것은 아닙니다. 표준 GSI는 메모리가 부족할 때 디스크에 유출될 수 있으므로 효율적인 인덱싱과 스캔을 위해서는 효율적인 디스크 IO가 중요합니다.
표준 글로벌 보조 인덱스의 쓰기 모드
이전 표준 GSI는 추가 전용 쓰기 모드만 제공했습니다. 추가 전용 쓰기는 인덱스가 변경될 때마다 파일 끝에 쓰기를 수행합니다. 그러나 추가 전용 쓰기는 자주 압축을 해야 합니다. 4.5 버전부터는 표준 GSI에 "순환 쓰기"라는 쓰기 모드가 추가되었습니다.
'순환 쓰기'를 사용하도록 설정하면 변이가 발생하면 단순히 파일 끝에 새 페이지를 추가하는 대신 쓰기 작업에서 파일에서 고아 공간을 재사용하는 방법을 찾습니다. 파일에 쓰기를 수용할 수 있는 고아 공간이 충분하지 않은 경우에도 쓰기 작업은 여전히 추가를 사용하여 쓰기를 수행할 수 있습니다.

순환 쓰기를 사용하면 전체 압축도 여전히 동일한 방식으로 작동합니다. 압축 프로세스는 기존 파일을 읽고 고아가 된 항목을 더 이상 포함하지 않는 연속된 새 파일을 작성하여 연속된 파일로 기록합니다. 그러나 필요한 압축 횟수는 크게 줄어듭니다. 몇 시간마다 압축하는 대신 일주일에 한 번씩 압축할 수 있으며, 이는 IO 용량(IOPS 및 MB/sec).
표준 GSI에 대한 쓰기 모드 및 압축 트리거 구성하기
표준 GSI는 두 가지 쓰기 모드를 제공합니다. 쓰기 모드 및 인덱스 조각화에 대한 구성은 w의 설정 > 자동 조각화 아래에 있습니다.eb 콘솔. (참고: F인덱스에 대한 래그메이션 설정은 인덱스에 '표준 글로벌 보조 인덱스' 저장 옵션을 선택한 경우에만 적용됩니다. 쓰기 모드 및 압축 전략은 메모리에 최적화된 글로벌 보조 인덱스에는 적용되지 않습니다.)
- 시간 간격이 있는 순환 쓰기를 사용하여 압축을 트리거합니다: 버전 4.5로 생성된 새 클러스터의 경우 이 옵션이 기본적으로 선택되어 있습니다. 순환 쓰기를 사용하면 자주 압축할 필요가 없습니다. 압축을 실행할 수 있는 요일과 시작 시간을 지정하고 선택적으로 압축을 중단할 수 있는 기간의 종료 시간을 설정해야 합니다. 종료 시간은 압축 중단 옵션을 체크한 경우에만 적용됩니다.
- 압축을 트리거하는 인덱스 조각화 수준의 추가 전용 쓰기: 버전 4.0 또는 4.1에서 클러스터를 업그레이드할 때(인덱싱 서비스가 활성화된 상태에서) 이 옵션이 기본적으로 선택됩니다. 이 옵션은 주로 이전 버전과의 호환성을 위해 유지됩니다.
언제든지 쓰기 모드를 변경할 수 있습니다.

알림 및 통계는 표준 인덱스와 메모리 최적화 인덱스 간에 동일한 방식으로 작동하며, 다음을 참조할 수 있습니다. 파트 II 를 참조하여 통계 및 알림에 대한 자세한 정보를 확인하세요.
-cihan