Há um recurso no Couchbase 4.x que pode realmente ajudar com Índice Secundário Global e que muitos não conhecem. É a capacidade de enfileirar instruções de criação de índices e, em seguida, paralelizar sua criação para obter eficiência e desempenho.
Se precisar criar vários índices de uma só vez, você poderá adiar a criação dos índices. Então, quando estiver pronto, você dirá ao cluster para criar esses índices. Por exemplo, preciso criar dois índices, mas também quero alta disponibilidade dos meus índices, portanto, preciso de uma cópia de cada índice em cada um dos Serviço de índice (IS) nós. Em outras palavras, quatro CRIAR ÍNDICE total de declarações.
|
1 2 3 4 5 6 7 |
CREATE INDEX idx01 ON bucketname(prop1) WHERE prop1 = "value" WITH {"nodes": [ "node1:8091" ], "defer_build":true}; CREATE INDEX idx02 ON bucketname(prop1) WHERE prop1 = "value" WITH {"nodes": [ "node2:8091" ], "defer_build":true}; CREATE INDEX idx03 ON bucketname(prop2) WHERE prop2 = "value" WITH {"nodes": [ "node1:8091" ], "defer_build":true}; CREATE INDEX idx04 ON bucketname(prop2) WHERE prop2 = "value" WITH {"nodes": [ "node2:8091" ], "defer_build":true}; |
Se você não fizesse mais nada, esses índices permaneceriam no status diferido/criado. A próxima instrução que você precisa chamar é ÍNDICE DE CONSTRUÇÃO pois ele dirá ao cluster para realmente iniciar a compilação.
|
1 |
BUILD INDEX ON `bucketname`(`idx01`,`idx02`,`idx03`,`idx04`) USING GSI; |
Nesse momento, os nós IS começarão a criar os índices, mas em paralelo e, melhor ainda, usando o mesmo Protocolo de alteração de banco de dados (DCP) dos nós do Data Service para melhorar a utilização da E/S da rede. Se você os criasse sem o adiamento, um seria criado e você esperaria. Sob as coberturas, o nó do serviço de índice criaria aquele a partir de um fluxo DCP. Quando esse fosse concluído, você colocaria a próxima instrução CREATE e aguardaria... outro fluxo DCP com os mesmos dados. Continue fazendo isso até que todos os quatro estejam completos. Tudo em série.
Com o defer_build e, em seguida, a instrução BUILD INDEX, você coloca todas as instruções de criação de uma só vez e depois vai tomar café. Não só os índices serão criados em paralelo em cada nó IS e entre os dois nós IS, mas cada nó IS só precisará de um fluxo DCP dos dados do bucket uma vez. Portanto, todo o processo é concluído com muito mais rapidez e eficiência. Especialmente ao criar scripts para a criação de muitos criações de índicese, em seguida, você pode agrupá-los em lotes.
Faça uma tentativa e informe o resultado. Para obter mais informações, consulte a documentação sobre CRIAR ÍNDICE e ÍNDICE DE CONSTRUÇÃO.