Consulta SQL++ / N1QL

Consultor de índice para carga de trabalho de consulta

Visão geral

Como o segundo recurso do Index Advisor lançado no servidor Couchbase 6.5 (Developer Preview), a função Advisor amplia o escopo do aconselhamento em uma única consulta para fornecer recomendações de índice para a carga de trabalho da consulta e suporte no tratamento da sessão. Neste artigo, faremos uma breve análise de como ele funciona dessas duas maneiras diferentes.

Função de consultor sobre carga de trabalho

A função Advisor funciona nas seguintes etapas:

    1. Tome como entrada uma única consulta ou uma carga de trabalho de consulta que consista em várias consultas.
    2. Processar cada consulta individual exclusiva com recomendação de índice.
    3. Mesclar e gerar os índices atuais/recomendados para toda a carga de trabalho.

Sintaxe:

SELECT ADVISOR("query")

SELECT ADVISOR(["consulta1", "consulta2", "consulta3″...])

O exemplo abaixo mostra o cenário em que a carga de trabalho da consulta é de system:completed_requests:

Semelhante ao comando ADVISE, a saída da função ADVISOR() consiste em três partes:

    • Current_used_indexes

Essa sessão resume os índices usados atualmente com a lista correspondente de instruções de consulta e a contagem de execução de cada consulta.

    • Índices recomendados

Esta sessão fornece informações sobre os índices recomendados com base em predicados na cláusula WHERE/ON para toda a carga de trabalho.

    • Índices_de_cobertura recomendados

A recomendação do índice de cobertura que se aplica à carga de trabalho da consulta será listada aqui.

Função de consultor sobre o tratamento de sessões

A função de tratamento de sessão permite que os usuários configurem o consultor de índices com antecedência para a carga de trabalho da consulta recebida nas etapas a seguir.

    • Defina as consultas de interesse com propriedades específicas.
    • Inicialize uma sessão para monitorar e coletar a carga de trabalho de consulta em execução em um cluster por um período de tempo.
    • Invoque o consultor de índice para realizar a análise da carga de trabalho da consulta coletada de forma assíncrona posteriormente.
    • Extrair e processar as recomendações do índice após a conclusão de todo o processo.

Sintaxe de uso:

1. ADVISOR( { "action" : "start",

           "profile": "john",

           "resposta" : "3s",     

           "duração" : "1m" ,

           "query_count" : 200 } )

    • "action"- usuários a serem definidos para que a sessão prossiga: "start" (iniciar), "stop" (parar), "get" (obter), "list" (listar), "purge" (limpar), "abort" (abortar).
    • "profile"(opcional) - o perfil de usuário especificado cuja consulta será de interesse. Se não for definido, coletará as consultas executadas por qualquer pessoa.
    • "response" (opcional) - o limite de tempo definido para que a consulta seja executada por mais tempo; a configuração padrão é 0s.
    • "duration" (obrigatório) - por quanto tempo a sessão deve estar em execução para coletar a consulta. As unidades de tempo válidas são "ns", "us" (ou "µs"), "ms", "s", "m", "h".
    • "query_count"(opcional) - O limite superior para o número de consultas que a sessão coletará. O query_limit é 4000 por nó de consulta. Se os usuários esperam coletar mais do que isso, eles precisam modificar a configuração global antes de inicializar a sessão:

curl http://localhost:port/admin/settings -d '{"completed-limit":10000}' -u user:password"

Após a inicialização bem-sucedida da sessão, um nome de sessão exclusivo será retornado para referência, conforme mostrado abaixo, em Ao mesmo tempo, uma tarefa assíncrona de invocar o consultor de índices para fazer a análise será programada para ser executada imediatamente após a conclusão da coleta da carga de trabalho.

2. ADVISOR( { "action" : "get",

           "session": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Após a conclusão do processo de análise, o usuário pode executar outra função advisor() para recuperar os resultados da recomendação de índice usando o nome da sessão correspondente.

3. ADVISOR( { "action" : "purge",

           "session": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Quando o índice que recomenda resultados para uma determinada sessão não for mais necessário, o usuário poderá optar por eliminá-lo para economizar espaço.

A sessão menos recente também será liberada automaticamente quando atingir a capacidade do cache.

4. ADVISOR({ "action" (ação): "list",

    "status": "completed"})

        Essa função pode fornecem a lista de sessões ativas no momento, sessões concluídas no momento e todas as sessões existentes. A entrada para "status" pode ser uma das opções "active", "completed" e "all".

As informações de saída são de system:tasks_cache. Vamos dar um exemplo para entender as informações relevantes sobre o Index Advisor:

    • classe: essa tarefa vem do consultor de índices.
    • delay: quanto tempo durará a fase de coleta de consultas.
    • name: nome da sessão igual ao anterior.
    • estado: o status da sessão: ["completed", "schedule", "running"].

 

5. ADVISOR( { "action" : "stop",

           "session": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

O usuário pode interromper antecipadamente a coleta de consultas e antecipar a análise do índice para execução imediata.

6. ADVISOR( { "ação" : "abortar",

           "session": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Os usuários também podem cancelar uma sessão sem executar a análise.

 

Resumo

A função Advisor funciona com uma única consulta e com várias consultas e fornece informações sobre os índices usados atualmente, os índices recomendados e os índices de cobertura recomendados para toda a carga de trabalho da consulta.

O manuseio da sessão do consultor permite que os usuários criem uma sessão para coletar as consultas que atendem aos requisitos especificados por um período de tempo e invocar o consultor de índice para fornecer recomendações para elas.

Como há muito espaço para melhorias na funcionalidade e no desempenho de ambas as funções, continuaremos a explorar e receber feedbacks para otimizar o design na próxima etapa.

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

Autor

Postado por Chang Liu

Engenheiro de software na equipe de consultas N1QL

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.