Servidor Couchbase

Aprimoramentos de desempenho do N1QL no Couchbase 5.0 March Developer Build

O N1QL no Couchbase percorreu um longo caminho desde que foi introduzido pela primeira vez no Couchbase Server 4.0. No Couchbase 5.0, as coisas foram levadas para o próximo nível em termos de desempenho. Na versão para desenvolvedores de março de 2017 do Couchbase 5.0, há aprimoramentos de desempenho para o N1QL na projeção de índice, aprimoramentos para CONTAGEMDISTINTOe o tão solicitado ORDER BYLIMITEDESLOCAMENTO operadores.

Então, o que foi feito especificamente para aprimorar todas essas áreas e como podemos aproveitar as mudanças?

Vejamos a projeção do índice, por exemplo. Ao criar um índice, você pode criar um com qualquer número de propriedades. Por exemplo, considere o seguinte índice:

A instrução acima criará um índice de cobertura no padrão Balde para o tipo, primeiro nomesobrenome propriedades de um determinado documento.

Agora, digamos que criamos a seguinte consulta N1QL para recuperar alguns documentos com o parâmetro idx que havíamos criado:

A consulta acima usaria o idx e retornar apenas o índice primeiro nome para cada documento correspondente. O conceito de consulta dessa forma não é novo, no entanto, o que acontece nos bastidores mudou. Você notará que, embora nosso índice tenha muitas chaves, estamos interessados apenas em um subconjunto ou, neste caso, em duas chaves.

Então, o que está acontecendo e por que isso é importante?

Nas versões anteriores do Couchbase, todas as chaves do índice eram levadas em consideração, independentemente de apenas um subconjunto ser usado. Como resultado, eram necessários mais rede, CPU e memória para acomodar o que estava acontecendo. Agora, esse não é o caso.

Então, como você sabe que a projeção de índice está acontecendo?

Faça um EXPLICAR na consulta que você está executando:

Nos resultados, você deverá ver algo relacionado a index_projection que se parece com o seguinte:

chaves_de_entrada será alterada com base em sua consulta. Por exemplo, e se adicionarmos um ONDE condição assim?

No cenário acima, obteríamos um EXPLICAR resultado que se parece com o seguinte:

Agora, a consulta acima não foi uma projeção de índice porque usamos todas as chaves em nosso índice de cobertura.

A criação de índices adequados em conjunto com a projeção de índices pode realmente ajudar no desempenho geral e no dimensionamento do cluster do Couchbase Server.

A projeção do índice não foi o único aprimoramento de desempenho feito na compilação de março de 2017, certo? É isso mesmo, há mais!

Vamos pegar o COUNT(DISTINCT) por exemplo. Agora vamos usar essa operação na consulta a seguir:

Nos resultados, você notará que ele está usando IndexCountDistinctScan2 e o que ele está fazendo é armazenar todos os tipo no índice e processando os valores distintos. Embora isso aconteça no indexador no Couchbase 5.0, anteriormente acontecia no serviço N1QL em edições anteriores. Ao transferir essa operação para o indexador, podemos obter ganhos significativos de desempenho.

Da mesma forma, pegue o DESLOCAMENTOLIMITEORDER BY operadores que podem ser usados em consultas N1QL. Veja a consulta a seguir, por exemplo:

Você notará que o LIMITE, ORDER BYDESLOCAMENTO aparecerão no indexador. Antes da versão 5.0, o LIMITE apareceu no indexador, mas agora os outros também aparecem. Essa é uma grande vitória, pois nas versões anteriores do Couchbase, se você compensasse os resultados, o N1QL obteria um número X de resultados e descartaria tudo antes da compensação.

Para obter mais ajuda com o N1QL, consulte a seção Portal do desenvolvedor do Couchbase que contém uma grande quantidade de documentação útil para desenvolvedores.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

2 Comentários

  1. " O exemplo "OFFSET, LIMIT e ORDER BY" deve ser

    EXPLAIN SELECT firstname
    DO padrão
    WHERE type = 'person'
    ORDER BY firstname
    LIMITE 1
    OFFSET 1;

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.