Couchbase 4.x에는 다음과 같은 경우에 도움이 되는 기능이 있습니다. 글로벌 보조 인덱스 생성에 대해 잘 모르는 분들이 많습니다. 인덱스 생성 문을 큐에 넣은 다음 효율성과 성능을 위해 생성을 병렬화하는 기능입니다.
한 번에 여러 인덱스를 만들어야 하는 경우, 인덱스 생성을 연기할 수 있습니다. 그런 다음 준비가 되면 클러스터에 해당 인덱스를 만들도록 지시하면 됩니다. 예를 들어, 두 개의 인덱스를 만들어야 하지만 인덱스의 고가용성을 원하므로 각 인덱스의 복사본을 각 인덱스의 인덱스 서비스(IS) 노드. 즉, 4개의 인덱스 생성 문 합계.
|
1 2 3 4 5 6 7 |
만들기 INDEX idx01 켜기 버킷명(prop1) 어디 prop1 = "value" WITH {"nodes": [ "node1:8091" ], "defer_build":true}; 만들기 INDEX idx02 켜기 버킷명(prop1) 어디 prop1 = "value" WITH {"nodes": [ "node2:8091" ], "defer_build":true}; 만들기 INDEX idx03 켜기 버킷명(prop2) 어디 prop2 = "value" WITH {"nodes": [ "node1:8091" ], "defer_build":true}; 만들기 INDEX idx04 켜기 버킷명(prop2) 어디 prop2 = "value" WITH {"nodes": [ "node2:8091" ], "defer_build":true}; |
다른 작업을 수행하지 않으면 이러한 인덱스는 지연/생성 상태로 유지됩니다. 다음으로 호출해야 하는 문은 빌드 인덱스 를 사용하면 클러스터가 실제로 빌드를 시작하도록 지시합니다.
|
1 |
빌드 INDEX 켜기 `버킷명`(`idx01`,`idx02`,`idx03`,`idx04`) 사용 GSI; |
이 시점에서 IS 노드는 인덱스 생성을 시작하지만, 병렬로 그리고 더 나은 방법으로 동일한 인덱스를 사용합니다. 데이터베이스 변경 프로토콜(DCP) 스트림을 데이터 서비스 노드에서 전송하여 네트워크 IO 활용도를 높일 수 있습니다. 디퍼 없이 빌드하면 하나의 스트림이 생성되고 대기하게 됩니다. 그 아래에서 인덱스 서비스 노드는 DCP 스트림에서 해당 스트림을 생성합니다. 그 하나가 완료되면, 다음 CREATE 문을 넣고 동일한 데이터의 또 다른 DCP 스트림을 기다립니다. 네 개가 모두 완료될 때까지 이 작업을 계속합니다. 모두 연속적으로.
defer_build와 BUILD INDEX 문을 사용하면 모든 create 문을 한 번에 넣고 커피를 마실 수 있습니다. 인덱스가 각 IS 노드와 두 IS 노드 간에 병렬로 구축될 뿐만 아니라 각 IS 노드는 버킷 데이터의 DCP 스트림을 한 번만 필요로 합니다. 따라서 전체 프로세스가 훨씬 더 빠르고 훨씬 더 효율적으로 완료됩니다. 특히 많은 양의 데이터 생성을 스크립팅할 때 유용합니다. 인덱스 생성를 클릭한 다음 이를 배치로 그룹화할 수 있습니다.
사용해 보시고 피드백을 남겨 주세요. 자세한 내용은 다음 문서를 참조하세요. 인덱스 생성 그리고 빌드 인덱스.